我尝试计算操作之间的时间。所以,用相同的代码编写两个方法,但使用不同的方式。起初我喜欢这样:
private static void calcAverageTimeUid(ISomeObject someObj, int N,ISnapshot _Snapshot)
{
Stopwatch stopWatch = new Stopwatch();
int averageTime = 0;
var uid = someObj.Uid;
for (int i = 0; i < N; i++)
{
stopWatch.Start();
var coll = _Snapshot.GetObject(uid);
stopWatch.Stop();
TimeSpan ts = stopWatch.Elapsed;
averageTime = averageTime + ts.Milliseconds;
}
averageTime = averageTime / N;
}
我有结果平均时间,例如 500 毫秒。N=1000000 甚至更多。
但是,我将此方法重写为两种方法:mainCalc,其中应该包含其他方法,fe 以获取 uid、id、name 等的平均时间。
主计算:
private static void mainCalc(ISomeObject someObj,int N,ISnapshot _Snapshot)
{
int averageTimeUID = 0;
for (int i = 0; i < N; i++)
{
var tmp=calcAverageTimeUid2(someObj,N,_Snapshot);
averageTimeUID+=tmp;
}
averageTimeUID = averageTimeUID / N;
}
和其他方法:
private static int calcAverageTimeUid2(ISomeObject someObj,int N,ISnapshot _Snapshot)
{
Stopwatch stopWatch = new Stopwatch();
var prop = someObj.Uid;
stopWatch.Start();
var obj = _Snapshot.GetObject(prop);
stopWatch.Stop();
TimeSpan ts = stopWatch.Elapsed;
return ts.Milliseconds;
}
所以,我在这个方法中运行 mainCalc 并运行 calcAcerageTimeUid2。而 stopWatch=0 毫秒的结果!
这是错误的结果还是不是?我不明白 - 什么方式使用秒表对吗?
PS删除多余的秒表之一。
PPS 谢谢大家!