{$ERROR Do not use, untested/WIP/useless!} {$ifdef __HEAD} TProfileBinary = class(TProfileDataFile) private type TEnterRec = packed record Thread: TThreadID; When: Int64; Line: Integer; Func, Src: ShortString; end; TLeaveRec = packed record Thread: TThreadID; When: Int64; end; private fDF: TMemoryStream; public constructor Create(const aFileName: string); destructor Destroy; override; procedure WriteEnter(Thread: TThreadID; When: Int64; Func, Src: String; Line: Integer); override; procedure WriteLeave(Thread: TThreadID; When: Int64); override; end; {$ELSE} { TProfileBinary } constructor TProfileBinary.Create(const aFileName: string); begin inherited; fDF:= TMemoryStream.Create; fDF.SetSize(50000000); end; destructor TProfileBinary.Destroy; begin FreeAndNil(fDF); inherited; end; procedure TProfileBinary.WriteEnter(Thread: TThreadID; When: Int64; Func, Src: String; Line: Integer); var t: TEnterRec; begin t.When:= When; t.Thread:= Thread; t.Func:= Func; t.Src:= Src; t.Line:= Line; fDF.Write(t, sizeof(t)); end; procedure TProfileBinary.WriteLeave(Thread: TThreadID; When: Int64); var t: TLeaveRec; begin t.When:= When; t.Thread:= Thread; fDF.Write(t, sizeof(t)); end; {$ENDIF}