Advertisement
Guest User

Untitled

a guest
Jan 14th, 2016
105
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.13 KB | None | 0 0
  1. (*
  2. Result for my environment:
  3.  
  4. THashedStringList: 00:00:00.117
  5. TFPStringHashTable: 00:00:00.099
  6. TFPStringHashTable: 00:00:00.088
  7. THashedStringList: 00:00:00.123
  8. *)
  9.  
  10. program project1;
  11.  
  12. {$mode delphi}
  13.  
  14. uses
  15. FGL, Classes, SysUtils, Contnrs, IniFiles;
  16.  
  17. const
  18. COUNT = 100000; // 100.000
  19. FMT = 'hh:nn:ss.zzz';
  20. var
  21. I: Integer;
  22. B, E: TDateTime;
  23. Name: string = '';
  24. Value: string = '';
  25. SL: TStrings;
  26. LS: TFPStringHashTable;
  27. begin
  28. SL := THashedStringList.Create;
  29. LS := TFPStringHashTable.Create;
  30. try
  31. B := Now;
  32. // add name and value
  33. for I := 1 to COUNT do
  34. begin
  35. Name := IntToStr(I);
  36. SL.Add(Name + '=' + Name);
  37. end;
  38. // get value from name
  39. for I := 1 to COUNT do
  40. begin
  41. Name := IntToStr(I);
  42. Value := SL.Values[Name];
  43. end;
  44. E := Now;
  45. SL.Clear;
  46. WriteLn(SL.ClassName, ': ', FormatDateTime(FMT, E - B));
  47.  
  48. B := Now;
  49. // add name and value
  50. for I := 1 to COUNT do
  51. begin
  52. Name := IntToStr(I);
  53. LS.Add(Name, IntToStr(I));
  54. end;
  55. // get value from name
  56. for I := 1 to COUNT do
  57. begin
  58. Name := IntToStr(I);
  59. Value := LS[Name];
  60. end;
  61. E := Now;
  62. LS.Clear;
  63. WriteLn(LS.ClassName, ': ', FormatDateTime(FMT, E - B));
  64.  
  65. B := Now;
  66. // add name and value
  67. for I := 1 to COUNT do
  68. begin
  69. Name := IntToStr(I);
  70. LS.Add(Name, IntToStr(I));
  71. end;
  72. // get value from name
  73. for I := 1 to COUNT do
  74. begin
  75. Name := IntToStr(I);
  76. Value := LS[Name];
  77. end;
  78. E := Now;
  79. LS.Clear;
  80. WriteLn(LS.ClassName, ': ', FormatDateTime(FMT, E - B));
  81.  
  82. B := Now;
  83. // add name and value
  84. for I := 1 to COUNT do
  85. begin
  86. Name := IntToStr(I);
  87. SL.Add(Name + '=' + Name);
  88. end;
  89. // get value from name
  90. for I := 1 to COUNT do
  91. begin
  92. Name := IntToStr(I);
  93. Value := SL.Values[Name];
  94. end;
  95. E := Now;
  96. SL.Clear;
  97. WriteLn(SL.ClassName, ': ', FormatDateTime(FMT, E - B));
  98.  
  99. WriteLn('Press [ENTER] to exit ...');
  100. ReadLn;
  101. finally
  102. SL.Free;
  103. LS.Free;
  104. end;
  105. end.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement