gpt4 book ai didi

vba - 尽管延迟可变,但每步的平均时间是恒定的

转载 作者:行者123 更新时间:2023-12-04 21:32:31 27 4
gpt4 key购买 nike

我在 VBA 上制作了一个元胞自动机(Langton 的 Ant 仅供引用)。每一步都有一个Sleep(delay)在哪里 delay是一个变量。我还添加了 DoEventsdisplay 的末尾功能以确保每个步骤都显示在屏幕上。
Timer我可以监控一个步骤平均需要多长时间。结果绘制在下面的图表上(Y 轴:每步的时间(以毫秒为单位)。X 轴:delay(以毫秒为单位))

Time per step (in ms) vs <code>delay</code>

你能解释一下为什么它看起来像这样吗?特别是为什么它保持稳定?因为IMO,我想(或多或少)有一条直线。
在整个过程中,我没有在我的电脑上做任何其他事情,就得到了这些结果。

预先感谢您的帮助,

最佳答案

那是因为 Sleep API基于系统时钟。如果您的时钟分辨率低于您的 sleep 时间,那么它将四舍五入到您系统时钟的最接近的分辨率。您可以调用timeGetDevCaps查看系统的最小计时器分辨率。

这样想吧。你有一 block 普通的 watch ,只包括你通常的时针/分针/秒针(1/1000 没有指针等)。您想要计时半秒,但您的 watch 仅以 1 秒的间隔移动 - 因此您的 watch 的分辨率为每秒 1 个滴答声。由于这个分辨率,你不会知道半秒实际上已经过去了,直到整秒过去了,所以它被四舍五入到下一个刻度。

关于vba - 尽管延迟可变,但每步的平均时间是恒定的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48265906/

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