回答
結構的理想大小可能是一個高速緩存行(或其一個子數)。一級高速緩存行通常是32或64 字節。將數據結構的元素跨越緩存行邊界將需要兩次主內存訪問來讀取或寫入它,而不是一次。
如果編譯器優化結構以適應寄存器,那麼它們之間的關係是高速緩存行大小和寄存器大小之間的關係? – 2012-03-02 00:31:54
我不同意這個答案。如果你的結構只需要包含1位數據,那麼在每個數據結構上浪費整個32或64個字節就會浪費更多的緩存行。唯一一次有這種浪費的填充是有意義的,即當對象的數量非常小,並且它們是從運行在不同內核上的不同線程訪問時。 – 2012-03-02 00:32:50
@Loki:編譯器確實沒有這種結構尺寸的自由。即使它沒有固定的ABI,C標準對結構的相對排列提出了要求,其結構的初始子序列同意使得不可能同時用填充同時「優化」多個結構的尺寸。 – 2012-03-02 00:34:15
我不認爲你的問題有合理的答案。沒有關於應用環境的任何信息,「結構的理想尺寸」是方式,方式不明確。另一方面,32位是一個現代整數的空間 - 除了幾個字符或位域之外,它對於「結構」來說不夠大。
問題說「32 **字節**」不是位。 Markgz正確地指出,這適合單緩存行。 – MSalters 2012-03-02 08:59:51
結構的理想大小足以容納它需要包含的信息。
+1因爲直言不諱。 – Mysticial 2012-03-02 00:01:33
無論如何,但我想我的答案是這個更詳細的版本。 :-) – 2012-03-02 00:09:52
@R:我其實會詳細說明這一點,但我不得不離開。現在我想我會放棄它。 – 2012-03-02 03:23:34
結構的最佳大小通常是存儲它應該包含的任何數據所需的最小大小,而不需要任何諸如bit twiddling/misaligned訪問之類的攻擊來使其適合。
- 1. OLAP尺寸結構
- 2. C尺寸結構
- 3. 尺寸的C++結構
- 4. 適用於高負載系統的最佳體系結構
- 5. 處理文件系統更改的最佳體系結構?
- 6. 理解C++結構尺寸
- 7. 構建SSO系統的最佳實踐
- 8. CSS Bootstrap網格系統的尺寸
- 9. 結構的尺寸與Linux操作系統(GCC)和Windows(mingw32的GCC)
- 10. 決定VCDB尺寸的最佳做法
- 11. PSD網站模板的最佳尺寸?
- 12. Facebook的飼料圖像最佳尺寸
- 13. zlib壓縮的最佳尺寸?
- 14. 評論的最佳尺寸 - SQL Server
- 15. 模擬文件系統的最佳算法和數據結構
- 16. php:構建社區系統的最佳系統/ cms?
- 17. MVC 11.0 - 錯誤的結構尺寸?
- 18. 最佳體系結構解決方案
- 19. Android:根據按鈕的尺寸查找文本的最佳尺寸
- 20. Javascript的體系結構/應用程序結構最佳實踐?
- 21. C結構尺寸不一致
- 22. HTML結構,屏幕尺寸元素
- 23. 如何減小結構尺寸
- 24. SSAS尺寸關係
- 25. 什麼是構建數據庫的最佳構建系統?
- 26. 企業,系統和應用程序體系結構(最佳實踐?)
- 27. Quest系統最佳設計
- 28. gtk最小尺寸
- 29. javascript最大尺寸
- 30. ColorBox最大尺寸
推測是基於最高效的讀/寫對齊大小或與緩存有關。咩!這個也行。 – dmckee 2012-03-01 23:50:15
對於某些應用程序來說,對齊的數量可能大於大小。 – Flexo 2012-03-01 23:50:43
從32bit的限制中,我可以假設這是爲了能夠將整個結構放入寄存器以便更快地訪問和使用。 – Odinn 2012-03-01 23:51:00