我使用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