我正在處理一個對對象進行大量操作的程序;創建,刪除,動態播放它們,對指針進行洗牌,比較內容等。這些對象中的大多數至少有40個字節(最多約90個字節),並且一次可能會有10,000個以上的內存。如何確定大型對象的性能成本(在C++中)
我想確定的是我是否應該打算減小它們的尺寸。我可以剖析構造函數,新建,刪除等。但是,我認爲大型對象最重要的性能來自緩存不友好。有沒有一種方式來確定對象大小對發生緩存未命中數量的貢獻? PS:我想象過度使用dynamic_cast也會影響性能。但是這很容易診斷。
編輯:我知道沒有配置文件進行優化是沒有用的。我所要求的是如果從剖析中確定,如果它是一個問題,我該如何確定。懲罰是否可能在整個代碼中分佈,這樣標準分析工具將不會有所幫助?
您需要真正地分析代碼並查看瓶頸*的真實位置,而不是僅僅猜測。 – 2012-07-08 18:07:10
您可以嘗試valgrind中的cachegrind工具。 – 2012-07-08 18:09:48