3
A
回答
5
是的,有一些工具可以讓你這樣做,但正如人們所期望的那樣,它們是平臺/體系結構特定的。他們也可能有編譯器限制:
Cachegrind:緩存和分支預測分析器。這可能是最接近你正在尋找的東西。您可以通過
valgrind
使用它(假設的Linux內核)valgrind --tool=cachegrind your_program
它有微調更多的選項。看看文檔。在Cachegrind
典型轉儲/輸出如下所示(剝離從網站)
==31751== I refs: 27,742,716
==31751== I1 misses: 276
==31751== LLi misses: 275
==31751== I1 miss rate: 0.0%
==31751== LLi miss rate: 0.0%
==31751==
==31751== D refs: 15,430,290 (10,955,517 rd + 4,474,773 wr)
==31751== D1 misses: 41,185 ( 21,905 rd + 19,280 wr)
==31751== LLd misses: 23,085 ( 3,987 rd + 19,098 wr)
==31751== D1 miss rate: 0.2% ( 0.1% + 0.4%)
==31751== LLd miss rate: 0.1% ( 0.0% + 0.4%)
==31751==
==31751== LL misses: 23,360 ( 4,262 rd + 19,098 wr)
==31751== LL miss rate: 0.0% ( 0.0% + 0.4%)
對於視窗這裏也是WinCachegrind
+0
非常感謝@romeric! –
相關問題
- 1. CPU緩存知道C++/C編程
- 2. cq5調度程序如何知道何時刷新緩存?
- 3. 知道程序
- 4. 有誰知道TIdHTTP的緩存組件?
- 5. 我如何知道用戶何時清除我的應用程序緩存
- 6. 程序緩存
- 7. 緩存程序
- 8. 不知道爲什麼程序崩潰
- 9. C程序崩潰,不知道爲什麼?
- 10. C++程序崩潰。不知道爲什麼
- 11. 知道線程目標C
- 12. 64位:爲什麼我的C/C++運行時(CRT)程序集緩存對我的應用程序不可見?
- 13. 我的網站運行緩慢,我不知道爲什麼?
- 14. android應用程序執行時間:知道線程執行和內存概念
- 15. C#應用程序緩存塊
- 16. CPU緩存的多線程行爲
- 17. 當超過最大緩存大小時想知道數據庫行爲
- 18. 我不知道爲什麼程序沒有運行
- 19. 程序跳過其他行,但不知道爲什麼
- 20. SQLite緩存與應用程序緩存
- 21. 我想知道爲什麼這個程序不會運行,溫度程序
- 22. Symfony2的應用程序緩存行爲PUT和DELETE
- 23. 應用程序緩存:在iPad上奇怪的行爲
- 24. 爲Android應用程序創建緩存
- 25. 爲Android應用程序緩存API
- 26. 爲ExtJs應用程序禁用緩存
- 27. 爲前端應用程序緩存
- 28. 爲應用程序緩存TextField
- 29. 錯誤在Ubuntu「time_struct的存儲大小是不知道」編譯C程序
- 30. C - 想知道程序中最大可分配的內存大小
如果您的程序代碼正確無誤,請在代碼審查時詢問。正如所給出的那樣,問題在於OT的OT。 – Olaf
請注意,支持它的工具是平臺和/或編譯器特定的。 Windows的答案與Linux不同,它與AIX,Mac OS X,HP-UX,Solaris等的答案不同。... –
爲什麼你在意?更重要的是你的程序的整體性能,或者它內部的一個非常大的函數。緩存是平臺的一部分(實際上是處理器的一部分) –