我搜索了这个问题,但没有找到答案。如果有重复的话,我会很乐意关闭它。
我目前正在尝试对一项技术进行性能评估,看到了一些令人难以置信的结果,所以决定进行一些实验。在其中,我想尝试并查看Stopwatch类是否返回我期望的结果。
Stopwatch sw = Stopwatch.StartNew();
Thread.Sleep(1);
sw.Stop();
Console.WriteLine(sw.ElapsedMilliseconds);
在这种情况下,我基本上看到了一个返回值为15ms的结果。我知道DateTime的分辨率大约在那里,但Thread.Sleep(1)不应该让线程睡眠1ms吗?我所在的系统返回Stopwatch.IsHighResolution true,并且运行在.NET 4中。背景: 这段代码在完整和正确的形式下旨在收集有关Aerospike db获取请求的一些数字。DB不在同一台机器上。当我在查询进行中打印sw.ElapsedMilliseconds时,我看到大多数响应时间都是亚毫秒级别的,这听起来有点可疑,因为我的Java代码等价物大多数情况下都会返回更可信赖的5ms-15ms响应时间。Java代码使用System.nanoTime()的差值。在我的C#代码中,通过Console.WriteLine(sw.ElapsedMilliseconds)打印出的submilli响应意味着0。
sleep()
参数,并查看参数和实际休眠时间相等的数字是多少。 - Mehraban