我们正在调试一些性能问题,并注意到一些来自秒表的奇怪结果。
第二层只是一个有2行日志记录的通过层。
所记录的时间如下:
我们原以为2小于1,虽然没有一个api精确到1ms。
我们在每个服务呼叫中创建一个新的秒表,所以现在不是旧秒表重新启动的时候。
有人知道我们为什么要得到这些数字吗?
编辑
2和3在同一台机器和同一个应用程序域上。
秒表代码是:
var sw = new Stopwatch();
sw.Start();
//code to call layer 3
sw.Stop();
orchestrationContext.LogOperationTime(functionName, sw.ElapsedMilliseconds);第三层的时间记录
protected DateTime StartTime { get; set; }
StartTime = DateTime.Now;
// code
new TimeSpan(DateTime.Now.Ticks - StartTime.Ticks).Milliseconds1的日志记录在一个独立的机器上,使用Websphere进行日志记录。
发布于 2012-08-28 09:16:18
好的,您的第二个代码示例应该返回TimeSpan.TotalMilliseconds,只使用Milliseconds,您将得到次第二部分。
为什么在第三层代码中不使用StopWatch,与第二层代码的样式相同,它更准确?
你的题目是“StopWatch的正确性”,但似乎你在把香蕉和桃子、苹果作比较。如果您的硬件或操作系统支持,StopWatch将使用HighResolution计时器,否则它将倒退到一个粒度约为15 of的System.Timer。
我不能评论如何或是否使用WebSphere,但它不会提供比StopWatch更精确的计时,除非它将API用于其他高精度的时间源。
发布于 2012-08-28 09:10:18
正如我所猜测的:
new TimeSpan(DateTime.Now.Ticks - StartTime.Ticks).TotalMilliseconds TotalMilliseconds以毫秒为单位获取时间范围
毫秒获得时间范围的毫秒部分
https://stackoverflow.com/questions/12155436
复制相似问题