gpt4 book ai didi

c# - 为什么我的 C# 计算时间可能是不确定的?

转载 作者:太空狗 更新时间:2023-10-29 22:17:05 25 4
gpt4 key购买 nike

我正在运行一个搜索算法,该算法在开始时使用单个种子。从这一点开始,我希望算法能够以确定性的方式运行,这在很大程度上是这样的。我可以通过查看第 10,000 步、第 20,000 步并看到它们相同来在很大程度上验证这一点。不过,我看到的不同之处在于用于到达同一位置(采用相同路径)的线程处理器时间长度。我正在测量线程时间ProcessThread.TotalProcessorTime.

为了量化这一点,我为您做了一些测试。我改变了运行时间并测量了在这段时间内评估的解决方案的数量


    30s         60s          120s        120s
473,962 948,800 1,890,668 1,961,532
477,287 954,335 1,888,955 1,936,974
473,441 953,049 1,895,727 1,960,875
475,606 953,576 1,905,271 1,941,511
473,283 951,390 1,946,729 1,949,231
474,846 954,307 1,840,893 1,939,160
475,052 952,949 1,848,938 1,934,243
476,797 957,179 1,945,426 1,951,542

475,034 476,599 473,831 486,721
1,478 2,426 23,922 11,108

我对每个测试重复了 8 次。底部两行显示了在 30 秒内评估的平均解,然后是标准差。我重复了 120 秒的测试,因为标准偏差第一次如此之高而第二次则低得多。

如果我的算法执行相同的工作,那么什么会导致相同的工作花费不同的时间?引入了什么随机元素?

澄清几点:

  1. 我说的是线程处理器时间而不是时钟时间
  2. 该算法在单个线程上运行,与其他线程没有显式交互
  3. 此环境为 Windows XP .Net C# 双处理器
  4. 这是一个控制台应用程序
  5. 该算法使用处理器和内存,只有在算法完成后才会将结果打印到屏幕上。

最好的问候

最佳答案

优化、内存管理(GC、分配、分页等)和即时编译。

关于c# - 为什么我的 C# 计算时间可能是不确定的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6679063/

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