You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 

64 lines
1.2 KiB

  1. {$ERROR Do not use, untested/WIP/useless!}
  2. {$ifdef __HEAD}
  3. TProfileBinary = class(TProfileDataFile)
  4. private type
  5. TEnterRec = packed record
  6. Thread: TThreadID;
  7. When: Int64;
  8. Line: Integer;
  9. Func, Src: ShortString;
  10. end;
  11. TLeaveRec = packed record
  12. Thread: TThreadID;
  13. When: Int64;
  14. end;
  15. private
  16. fDF: TMemoryStream;
  17. public
  18. constructor Create(const aFileName: string);
  19. destructor Destroy; override;
  20. procedure WriteEnter(Thread: TThreadID; When: Int64; Func, Src: String; Line: Integer); override;
  21. procedure WriteLeave(Thread: TThreadID; When: Int64); override;
  22. end;
  23. {$ELSE}
  24. { TProfileBinary }
  25. constructor TProfileBinary.Create(const aFileName: string);
  26. begin
  27. inherited;
  28. fDF:= TMemoryStream.Create;
  29. fDF.SetSize(50000000);
  30. end;
  31. destructor TProfileBinary.Destroy;
  32. begin
  33. FreeAndNil(fDF);
  34. inherited;
  35. end;
  36. procedure TProfileBinary.WriteEnter(Thread: TThreadID; When: Int64; Func, Src: String; Line: Integer);
  37. var
  38. t: TEnterRec;
  39. begin
  40. t.When:= When;
  41. t.Thread:= Thread;
  42. t.Func:= Func;
  43. t.Src:= Src;
  44. t.Line:= Line;
  45. fDF.Write(t, sizeof(t));
  46. end;
  47. procedure TProfileBinary.WriteLeave(Thread: TThreadID; When: Int64);
  48. var
  49. t: TLeaveRec;
  50. begin
  51. t.When:= When;
  52. t.Thread:= Thread;
  53. fDF.Write(t, sizeof(t));
  54. end;
  55. {$ENDIF}