2010-02-27 24 views
2

大家好,對比效果

這是一個比較普遍的問題,但基本上我想比較的兩個多媒體應用軟件的性能。雖然他們正在做同樣的事情,但他們運行在不同的平臺上,對於實現還沒有任何瞭解。我得到了一些不同的表現數據,我試圖說明可能是這樣的情況。到目前爲止,我想出了以下內容:

更好的性能,因爲軟件的優化:

  • 循環展開,在更高的代碼內存佔用的成本結果
  • 親計算存儲在內存中的由於底層的硬件體系結構以更高的數據存儲器佔用

性能更好的成本

  • 在更高的時鐘速度
  • 運行的應用程序提供更好的硬件支持
  • 更好的緩存機會

有人能想出別的東西或者是所有的?

感謝, 西蒙

回答

2

我會說:

  • 如果你一無所知的實現,你會不會有興趣的是如何實施工作,包括展開循環和一切。
  • 在該抽象級別上,您可能需要測量與最終用戶相關的性能目標,如in this Wikipedia article
  • 特別是,對於單用戶系統響應時間和吞吐量更重要;而對於多用戶系統而言,併發性和吞吐量會很重要。前者受時鐘速度和UI設計的影響;後者也受高速緩存大小和整個系統在高負載下的行爲影響。
  • 馬丁·福勒性能指標的良好回顧他PoEA
1

好問題。硬件當然有所作爲,但軟件結構的差異也是如此。

微觀層面的優化如展開會有很大的不同。

推理它並不會讓你走得很遠 - 你需要調查。

我不是說你可以得到這個問題的明確答案,但這是我會做的。 Somehow, get 10 or 20 random-time stack samples,無論是通過中斷和轉儲,的pstacklsstack,或調試器下運行,並使用Ctrl-C,還是不錯的組採樣分析器像RotateRight /縮放。

你可以看看這些樣本,並得出一個想法,百分比,每個程序如何花費時間。如果它們都接近最佳,那麼即使你不確切知道他們在做什麼,圖片也應該看起來非常相似。如果一個人在內存管理上花費的時間比例更高,那就是一面紅旗。如果一個調用堆棧比另一個調用堆棧深得多,那麼這也會引起懷疑,這並不是因爲調用昂貴,而是因爲過於普通的浪費編碼風格往往表明這一點。

如果你沒有符號,可能需要一定量的偵探工作才能弄清楚,你可能無法做到,但這就是我的方法。