我試着計算操作之間的時間。 因此,用相同的代碼編寫兩種方法,但使用不同的方法。 在第一種方式我不喜歡的是: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