<分区>
我搜索了这个问题,但没有找到答案。如果它是重复的,我会很乐意将其关闭。
我目前正在尝试对一项技术进行一些性能评估,并看到了一些相当令人难以置信的结果,因此我决定进行一些试验。为此,我想尝试看看 Stopwatch 类是否返回了我预期的结果。
Stopwatch sw = Stopwatch.StartNew();
Thread.Sleep(1);
sw.Stop();
Console.WriteLine(sw.ElapsedMilliseconds);
在这种情况下,我几乎看到了 15 毫秒的返回值。我知道 DateTime 的分辨率在那里,但 Thread.Sleep(1) 不应该让一个线程休眠 1 毫秒吗?我使用的系统返回 Stopwatch.IsHighResolution true 并且它在 .NET 4 中运行。
背景: 此代码以其完整且正确的形式旨在收集有关 Aerospike db get 请求的一些数字。数据库不在同一个盒子上。当我打印出 sw.ElapsedMilliseconds 时,查询在中间,我看到的大部分是亚毫秒响应,考虑到我的 Java 等效代码大部分时间返回更可信的 5ms-15ms 响应,这听起来有点可疑。 Java 代码使用了 System.nanoTime() 的差异。我的 C# 代码中的毫微响应是指 Console.WriteLine(sw.ElapsedMilliseconds) 打印 0。