首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >.net秒表的正确性

.net秒表的正确性
EN

Stack Overflow用户
提问于 2012-08-28 08:27:47
回答 2查看 516关注 0票数 0

我们正在调试一些性能问题,并注意到一些来自秒表的奇怪结果。

  1. 我们有一个客户端调用一个web服务。
  2. 我们用秒表记录web服务的服务层的时间。
  3. 我们用datetime.now.ticks记录下一层的时间。

第二层只是一个有2行日志记录的通过层。

所记录的时间如下:

  1. 110 ms
  2. 52125毫秒
  3. 125 ms

我们原以为2小于1,虽然没有一个api精确到1ms。

我们在每个服务呼叫中创建一个新的秒表,所以现在不是旧秒表重新启动的时候。

有人知道我们为什么要得到这些数字吗?

编辑

2和3在同一台机器和同一个应用程序域上。

秒表代码是:

代码语言:javascript
复制
            var sw = new Stopwatch();
            sw.Start();

            //code to call layer 3

            sw.Stop();
            orchestrationContext.LogOperationTime(functionName, sw.ElapsedMilliseconds);

第三层的时间记录

代码语言:javascript
复制
    protected DateTime StartTime { get; set; }
    StartTime = DateTime.Now;

    // code 

    new TimeSpan(DateTime.Now.Ticks - StartTime.Ticks).Milliseconds

1的日志记录在一个独立的机器上,使用Websphere进行日志记录。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-08-28 09:16:18

好的,您的第二个代码示例应该返回TimeSpan.TotalMilliseconds,只使用Milliseconds,您将得到次第二部分。

为什么在第三层代码中不使用StopWatch,与第二层代码的样式相同,它更准确?

你的题目是“StopWatch的正确性”,但似乎你在把香蕉和桃子、苹果作比较。如果您的硬件或操作系统支持,StopWatch将使用HighResolution计时器,否则它将倒退到一个粒度约为15 of的System.Timer

我不能评论如何或是否使用WebSphere,但它不会提供比StopWatch更精确的计时,除非它将API用于其他高精度的时间源。

票数 3
EN

Stack Overflow用户

发布于 2012-08-28 09:10:18

正如我所猜测的:

代码语言:javascript
复制
new TimeSpan(DateTime.Now.Ticks - StartTime.Ticks).TotalMilliseconds 

TotalMilliseconds以毫秒为单位获取时间范围

毫秒获得时间范围的毫秒部分

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12155436

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档