1
我們有一個小C++項目,具有以下體系結構。算法與預編譯參考實現的速度比在不同計算機上有所不同
這兩個被編譯成一個DLL:
- 算法
- 一種用於該檢查結果的正確性和測量執行速度的算法測試儀。
然後另一個實現相同的算法是由別人寫的。
的main()
功能執行此:
- 調用該算法的兩種實現測試器並測量它們的執行速度。這是多次完成的,以便以後可以取平均值。
- 計算它們之間的速度比(測量時間/測量參考時間)。這被稱爲分數。
我們發現在不同的計算機上運行相同的代碼和DLL會返回相當不同的速度比。在一臺計算機上,實現得分爲6.4,而另一臺計算機上的實現得分爲2.8。那怎麼可能?
「算法與預編譯參考實現的速度比在不同計算機上有所不同」 - 是的,這就是非程序員所稱的「真實生活」。 – 2013-12-21 19:03:41
你爲什麼期望該比例(大致)相同? – dyp
計算機在各種或多或少微妙的方面都有所不同。例如,考慮基本算法A和需要額外存儲器的更廣泛的緩存算法B.在系統1上,兩者都適用於可用的RAM,而B更快,而在系統2上,算法B開始交換並放慢抓取速度。 – doynax