我试着计算操作之间的时间。 因此,用相同的代码编写两种方法,但使用不同的方法。 在第一种方式我不喜欢的是:StopWatch和0毫秒通过c#
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,至少应包含其他方法,f.e。 以获得uid,id,名字等的平均时间。
mainCalc:
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和秒表= 0毫秒内method.And结果运行calcAcerageTimeUid2!
这是错误的结果或不?我不明白 - 使用stopWatch的方式是正确的?
P.S.删除多余的StopWatch之一。
P.P.S.感谢你们所有人!
你是不是开始秒表在这些方法之一。(提示:中间的一个)。 –
我不太明白你的观点,但是如果你想让它显示每次操作的时间,你应该重新启动或重新设置秒表。 –
@SimonWhitehead:他正在使用'calcAverageTimeUid2'中的秒表并返回结果。 MainCalc正在总结总时间。 – mao47