我搜索了这个问题,但没有看到答案。如果它是重复的,我很乐意将其关闭。
我目前正在尝试对一项技术进行一些性能评估,并看到了一些令人难以置信的结果,因此我决定进行一些实验。在那我想尝试看看 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# 代码中的 submilli 响应是指 Console.WriteLine(sw.ElapsedMilliseconds) 打印 0。