@@ -119,7 +119,7 @@ TOneBRC = class
119119 // for a line between idx [aStart; aEnd], returns the station-name length, and the integer-value of temperature
120120 procedure ExtractLineData (const aStart: Int64; const aEnd: Int64; out aLength: ShortInt; out aTemp: SmallInt); { $IFNDEF VALGRIND} inline; { $ENDIF}
121121 procedure GetNextPart (var aStart, aEnd: Int64);
122- procedure InitMinMax (const aThreadNb: TThreadCount);
122+ procedure InitMinMax (const aThreadNb: TThreadCount); inline;
123123
124124 public
125125 constructor Create (const aThreadCount: TThreadCount);
@@ -148,20 +148,18 @@ TOneBRC = class
148148
149149 TThreadProc = procedure (aThreadNb: TThreadCount; aStartIdx: Int64; aEndIdx: Int64) of object ;
150150 TGetNextPart = procedure (var aStart, aEnd: Int64) of object ;
151- TInitMinMax = procedure (const aThreadNb: TThreadCount) of object ;
152151
153152 TBRCThread = class (TThread)
154153 private
155154 FProc: TThreadProc;
156155 FGetNextPart: TGetNextPart;
157- FInitMinMax: TInitMinMax;
158156 FThreadNb: TThreadCount;
159157 FStart: Int64;
160158 FEnd: Int64;
161159 protected
162160 procedure Execute ; override;
163161 public
164- constructor Create (aProc: TThreadProc; aGetNextPart: TGetNextPart; aInitMinMax: TInitMinMax;
162+ constructor Create (aProc: TThreadProc; aGetNextPart: TGetNextPart;
165163 aThreadNb: TThreadCount; aStart: Int64; aEnd: Int64);
166164 end ;
167165
@@ -439,7 +437,8 @@ procedure TOneBRC.DispatchThreads;
439437 FDone := cPart * FThreadCount;
440438
441439 for I := 0 to FThreadCount - 1 do begin
442- FThreads[I] := TBRCThread.Create (@ProcessData, @GetNextPart, @InitMinMax, I, I*cPart, (I+1 )*cPart);
440+ InitMinMax(I);
441+ FThreads[I] := TBRCThread.Create (@ProcessData, @GetNextPart, I, I*cPart, (I+1 )*cPart);
443442 end ;
444443end ;
445444
@@ -668,22 +667,19 @@ procedure TOneBRC.GenerateOutput;
668667
669668procedure TBRCThread.Execute ;
670669begin
671- FInitMinMax (FThreadNb);
672-
673670 while true do begin
674671 FProc (FThreadNb, FStart, FEnd);
675672 FGetNextPart(FStart, FEnd);
676673 if FStart = -1 then break;
677674 end ;
678675end ;
679676
680- constructor TBRCThread.Create(aProc: TThreadProc; aGetNextPart: TGetNextPart; aInitMinMax: TInitMinMax;
677+ constructor TBRCThread.Create(aProc: TThreadProc; aGetNextPart: TGetNextPart;
681678 aThreadNb: TThreadCount; aStart: Int64; aEnd: Int64);
682679begin
683680 inherited Create(False);
684681 FProc := aProc;
685682 FGetNextPart := aGetNextPart;
686- FInitMinMax := aInitMinMax;
687683 FThreadNb := aThreadNb;
688684 FStart := aStart;
689685 FEnd := aEnd;
0 commit comments