簡介:
這些常數與 L1 快取行大小有何關係? 這些常數旨在為目標架構提供 L1 快取行大小的近似值。 破壞性幹擾:在此範例中,alignas 屬性使用常數來確保 data.a 和 data .b 具有用於真正共享的最佳對齊和記憶體佈局。
struct CacheOptimizedStruct { alignas(std::hardware_constructive_interference_size) int a; alignas(std::hardware_constructive_interference_size) int b; }; int main() { CacheOptimizedStruct data; // Accessing data.a and data.b in a tight loop will likely benefit from better cache locality. }兩者都定義為靜態 constexpr。如果您建立一個二進位檔案並在具有不同快取行大小的其他電腦上執行它,這不是問題嗎? 是的,這可能是一個問題。這些常數不能保證為所有目標電腦提供精確的快取行大小。 但是,您可以定義自己的常數或宏,以根據系統特定資訊提供更準確的值,例如:
以上是`std::hardware_delta_interference_size` 和 `std::hardware_constructive_interference_size` 與 L1 快取線大小有何關係?的詳細內容。更多資訊請關注PHP中文網其他相關文章!