작업 사이의 시간을 계산하려고합니다. 따라서 동일한 코드로 두 가지 메소드를 작성하되 다른 방법을 사용하십시오. 첫 번째 방법에서 내가 그렇게 할 :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 밀리 초 averageTime 등을 초래할 수 있습니다. N = 1000000 이상.
하지만이 방법을 mainCalc라는 두 가지 방법으로 다시 작성합니다. 다른 방법을 포함해야합니다. f. 을 사용하면 uid, id, name 등의 평균 시간을 알 수 있습니다.
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을 실행!
잘못된 결과인가요? 나는 이해하지 못한다 - 무슨 방법으로 사용합니까?
P. 초과 스톱워치 중 하나를 삭제하십시오.
P.P.S. 여러분 모두에게 감사드립니다!
당신은 그 방법 중 하나에 스톱워치를 시작하지 않습니다 .. (힌트 : 중간 일). –
나는 당신의 요점을 이해하지 못하지만, 각 작업의 시간을 나타내려면 스톱워치를 다시 시작하거나 재설정해야합니다. –
@SimonWhitehead : 그는'calcAverageTimeUid2'에 스톱워치를 사용하고 결과를 반환합니다. MainCalc가 총 시간을 합산합니다. – mao47