我使用C#測量機器的性能比較編碼性能
我希望測量代碼性能,但有額外的複雜性,我想有機器之間的對比(在.NET Framework 4.5操作不同的硬件)。
其中一個核心目標是提出基準比較算法(算法X與算法Y使用數據集Z),如果我始終使用相同的確切硬件,但我也希望可以選擇分佈式這些性能測試跨越多臺機器 - 大多數不同。
如何高效地測量特定機器的性能?
我目前正在使用System.Diagnostics.StopWatch類與一個Fibonacci套件混合,試圖測量機器可以處理多少個序列以便使用X ticks /毫秒。然而,正如你可能已經知道這種技術不是很精確。
StopWatch.Frequency中的答案是?
任何人有更好的建議嗎?
添加的信息-----
實施例:比較是不是多線程(核數都不會有問題)像說運行順序掃描,並且使用紅色/黑色樹之間的差的算法。
所以我最好的選擇是,當我想運行一個比較時,只需運行兩種算法 - 如果它是在不同的機器上生成的,就不會使用歷史基準測試。我必須承認,這是有道理的。 –
回答你的更新:仍然沒有,你必須考慮記憶作爲一個微不足道的例子。使用4Gb的機器A可能無法像使用8Gb的機器B一樣工作。還有其他一些因素的負載,甚至包括CPU的功能 - 不僅僅是速度,還有像SSE2或者3條指令這樣的東西,可能會在一個上使用,而不是另一個。 – gbjbaanb
另外:衡量性能的最佳方法是使用性能計數器。如果您需要更準確的值,則必須使用高頻計數器(使用QueryPerformanceCounter)。 – gbjbaanb