X-Git-Url: http://deadsoftware.ru/gitweb?a=blobdiff_plain;ds=sidebyside;f=src%2Fshared%2Fxprofiler.pas;h=6fb00357b467071a192a46556511fd86b0021780;hb=52cb3c5b37a706c085c14e89b33361ac349bbe74;hp=51d99e8b0e0e8fd155b8aa256add97d1fde688bd;hpb=4af2b6eac9b465e95af873343c21d244d1e74a75;p=d2df-sdl.git diff --git a/src/shared/xprofiler.pas b/src/shared/xprofiler.pas index 51d99e8..6fb0035 100644 --- a/src/shared/xprofiler.pas +++ b/src/shared/xprofiler.pas @@ -135,14 +135,18 @@ type // call this on frame end procedure mainEnd (); - procedure sectionBegin (name: AnsiString); + procedure sectionBegin (aName: AnsiString); procedure sectionEnd (); // this will reuse the section with the given name (if there is any); use `sectionEnd()` to end it as usual - procedure sectionBeginAccum (name: AnsiString); + procedure sectionBeginAccum (aName: AnsiString); end; +function curTimeMicro (): UInt64; inline; +function curTimeMilli (): UInt64; inline; + + implementation {$IF DEFINED(LINUX)} @@ -182,7 +186,7 @@ function curTimeMicro (): UInt64; inline; var r: THPTimeType; begin - if (mFrequency = 0) then initTimerIntr(); + //if (mFrequency = 0) then initTimerIntr(); {$IF DEFINED(LINUX)} clock_gettime(CLOCK_MONOTONIC, @r); result := UInt64(r.tv_sec)*1000000+UInt64(r.tv_nsec) div 1000; // microseconds @@ -193,6 +197,12 @@ begin end; +function curTimeMilli (): UInt64; inline; +begin + result := curTimeMicro div 1000; +end; + + // ////////////////////////////////////////////////////////////////////////// // class function TStopWatch.Create (): TStopWatch; begin @@ -417,7 +427,7 @@ begin {$ENDIF} end; -procedure TProfiler.sectionBegin (name: AnsiString); +procedure TProfiler.sectionBegin (aName: AnsiString); {$IF DEFINED(STOPWATCH_IS_HERE)} var sid: Integer; @@ -431,7 +441,7 @@ begin sid := xpsused; Inc(xpsused); pss := @xpsecs[sid]; - pss.name := name; + pss.name := aName; pss.timer.clear(); pss.prevAct := xpscur; // calculate level @@ -441,7 +451,7 @@ begin {$ENDIF} end; -procedure TProfiler.sectionBeginAccum (name: AnsiString); +procedure TProfiler.sectionBeginAccum (aName: AnsiString); {$IF DEFINED(STOPWATCH_IS_HERE)} var idx: Integer; @@ -453,10 +463,10 @@ begin begin for idx := 0 to xpsused-1 do begin - if (xpsecs[idx].name = name) then + if (xpsecs[idx].name = aName) then begin - if (idx = xpscur) then raise Exception.Create('profiler error(0): dobule resume: "'+name+'"'); - if (xpsecs[idx].prevAct <> -1) then raise Exception.Create('profiler error(1): dobule resume: "'+name+'"'); + if (idx = xpscur) then raise Exception.Create('profiler error(0): dobule resume: "'+aName+'"'); + if (xpsecs[idx].prevAct <> -1) then raise Exception.Create('profiler error(1): dobule resume: "'+aName+'"'); xpsecs[idx].prevAct := xpscur; xpscur := idx; xpsecs[idx].timer.resume(); @@ -464,7 +474,7 @@ begin end; end; end; - sectionBegin(name); + sectionBegin(aName); {$ENDIF} end; @@ -486,4 +496,6 @@ begin end; +begin + initTimerIntr(); end.