【发布时间】:2012-11-06 18:06:12
【问题描述】:
我有一个非常具体的问题,我需要回答一个非常具体的性能测试。我将简化代码,使其更容易理解。
我做了很多计算(几千万),所有这些都是在本身不太长的循环中完成的,我需要总计算时间。然而,所有的计算都不是一个接一个地直接完成的,而且每个循环都会“夹在中间”一些额外的代码。
我需要的是所有循环的总时间(包括声明和初始化 i、递增它以及与示例中的 100 进行比较)。为了测量我在每个循环之前直接启动Stopwatch 并在循环之后直接停止它的时间。但是这两个动作是否需要一些可能相关的时间?
示例:
Stopwatch sw = new Stopwatch();
sw.Start();
//how long does it now take until for loop is reached?
for(int i = 0; i < 100; i++)
{
//some calculations
}
//how much time does it take to stop sw?
sw.Stop();
当然,如果所有循环都直接一个接一个地完成并不重要,我可以从第一个循环的开头开始并在最后一个循环的结尾停止,但这在这里是不可能的。
我知道这个问题非常具体,但我希望有人可以在这里帮助我,因为来自大约 5000 万个循环的大量时间可能会在某种程度上影响我的结果。
【问题讨论】: