gpt4 book ai didi

c# - RDTSC 与秒表

转载 作者:行者123 更新时间:2023-11-30 21:17:32 31 4
gpt4 key购买 nike

我编写了自己的字符串匹配算法,我想准确地测量它的时间,将其与其他算法进行比较,以检查我的实现是否更好。

我试过(StopWatch),但它在每次运行时给出不同的时间,因为 Windows 操作系统运行了多个进程。我听说(RDTSC)可以得到的数量消耗的周期,但我不知道它是否也在每次执行中给出不同的周期数?

请帮帮我; (RDTSC) 能否为 C# 函数提供准确且相同的周期测量值,或者它类似于 (StopWatch)?在没有其他正在运行的进程的情况下单独获取 C# 函数的循环数的最佳方法是什么?非常感谢您的帮助或提示

最佳答案

it gives different time in each run, because of multiple processes running of the Windows OS.

这是所有基准测试的本质。

良好的基准测试通过统计方法抵消了这一点,即经常测量以抵消其他正在运行的程序的任何副作用。 这是要走的路。就精度而言,StopWatch 对于基准测试来说绰绰有余。

这需要做几件事(不涉及统计细节,我也不太擅长):

  1. 一个人应该持续足够长的时间来抵消测量方法引入的测量不精确(即使 RDTSC 也不完全精确),并抵消调用开销。毕竟,您想衡量您的算法,而不是运行测试循环和调用您的测试方法所花费的时间。
  2. 进行足够多的测试才能对结果充满信心:数据越多,统计数据的稳健性就越高。
  3. 尽量减少外部影响,尤其是系统性偏差。也就是说,在相同条件下在同一台机器上运行所有测试,否则结果无法比较。完全没有。此外,如果您运行多次测试(您应该这样做!),请交替使用不同的方法。

关于c# - RDTSC 与秒表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4737747/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com