Advertisement
Guest User

Untitled

a guest
Sep 19th, 2017
65
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.39 KB | None | 0 0
  1. program Project2;
  2.  
  3. {$APPTYPE CONSOLE}
  4.  
  5. {$R *.res}
  6.  
  7. {$define UseGenericList}
  8.  
  9. uses
  10. WinApi.Windows, System.SysUtils, System.Classes, System.Generics.Collections;
  11.  
  12. const
  13. ListItemCount = 100 * 1000;
  14.  
  15. {$if defined(UseGenericList)}
  16. const TestName = 'List<Integer>';
  17. procedure Test;
  18. var
  19. Start: Cardinal;
  20. List: TList<Integer>;
  21. I: Integer;
  22. begin
  23. List := TList<Integer>.Create;
  24. try
  25. List.Capacity := ListItemCount;
  26. for I := 0 to ListItemCount div 2 - 1 do
  27. List.Add(I);
  28. for I := ListItemCount div 2 to ListItemCount - 1 do
  29. List.Add(ListItemCount - I);
  30.  
  31. Start := GetTickCount;
  32. List.Sort;
  33. WriteLn(GetTickCount - Start);
  34. finally
  35. List.Free;
  36. end;
  37. end;
  38. {$else}
  39. const TestName = 'Classes.List';
  40. procedure Test;
  41. var
  42. Start: Cardinal;
  43. List: TList;
  44. I: Integer;
  45. begin
  46. List := TList.Create;
  47. try
  48. List.Capacity := ListItemCount;
  49. for I := 0 to ListItemCount div 2 - 1 do
  50. List.Add(Pointer(I));
  51. for I := ListItemCount div 2 to ListItemCount - 1 do
  52. List.Add(Pointer(ListItemCount - I));
  53.  
  54. Start := GetTickCount;
  55. List.SortList(function (Item1, Item2: Pointer): Integer
  56. begin
  57. Result := Integer(Item1) - Integer(Item2)
  58. end);
  59. WriteLn(GetTickCount - Start);
  60. finally
  61. List.Free;
  62. end;
  63. end;
  64. {$endif}
  65. begin
  66. try
  67. Test;
  68. except
  69. on E: Exception do
  70. Writeln(TestName, ':', E.ClassName, ': ', E.Message);
  71. end;
  72. Readln;
  73. end.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement