Advertisement
Guest User

Untitled

a guest
Jan 13th, 2016
89
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pascal 2.24 KB | None | 0 0
  1. program Project1;
  2.  
  3. {$IFDEF FPC}
  4. {$mode delphi}
  5. {$ENDIF}
  6.  
  7. uses
  8. {$IFDEF FPC}
  9.   FGL
  10. {$ELSE}
  11.   System.Generics.Collections
  12. {$ENDIF},
  13.   Classes, SysUtils;
  14.  
  15. type
  16.   TMyList = class({$IFDEF FPC}TFPGMap{$ELSE}TDictionary{$ENDIF}<Integer, string>)
  17. {$IFNDEF FPC}
  18.   private
  19.     function GetKeyData(AKey: Integer): string;
  20.   public
  21.     // just for Delphi compatible
  22.     property KeyData[AKey: Integer]: string read GetKeyData;
  23. {$ENDIF}
  24.   end;
  25.  
  26. {$IFNDEF FPC}
  27.   function TMyList.GetKeyData(AKey: Integer): string;
  28.   begin
  29.     if not TryGetValue(AKey, Result) then
  30.       Result := '';
  31.   end;
  32. {$ENDIF}
  33.  
  34. const
  35.   COUNT = 10000;
  36.   FMT = 'hh:nn:ss.zzz';
  37. var
  38.   I: Integer;
  39.   B, E: TDateTime;
  40.   Name: string = '';
  41.   Value: string = '';
  42.   SL: TStrings;
  43.   LS: TMyList;
  44. begin
  45.   SL := TStringList.Create;
  46.   LS := TMyList.Create;
  47.   try
  48.     B := Now;
  49.     // add name and value
  50.     for I := 1 to COUNT do
  51.     begin
  52.       Name := IntToStr(I);
  53.       SL.Add(Name + '=' + Name);
  54.     end;
  55.     // get value from name
  56.     for I := 1 to COUNT do
  57.     begin
  58.       Name := IntToStr(I);
  59.       Value := SL.Values[Name];
  60.     end;
  61.     E := Now;
  62.     SL.Clear;
  63.     WriteLn(SL.ClassName, ': ', FormatDateTime(FMT, E - B));
  64.  
  65.     B := Now;
  66.     // add name and value
  67.     for I := 1 to COUNT do
  68.       LS.Add(I, IntToStr(I));
  69.     // get value from name
  70.     for I := 1 to COUNT do
  71.       Value := LS.KeyData[I];
  72.     E := Now;
  73.     LS.Clear;
  74.     WriteLn(LS.ClassName, ': ', FormatDateTime(FMT, E - B));
  75.  
  76.     B := Now;
  77.     // add name and value
  78.     for I := 1 to COUNT do
  79.       LS.Add(I, IntToStr(I));
  80.     // get value from name
  81.     for I := 1 to COUNT do
  82.       Value := LS.KeyData[I];
  83.     E := Now;
  84.     LS.Clear;
  85.     WriteLn(LS.ClassName, ': ', FormatDateTime(FMT, E - B));
  86.  
  87.     B := Now;
  88.     // add name and value
  89.     for I := 1 to COUNT do
  90.     begin
  91.       Name := IntToStr(I);
  92.       SL.Add(Name + '=' + Name);
  93.     end;
  94.     // get value from name
  95.     for I := 1 to COUNT do
  96.     begin
  97.       Name := IntToStr(I);
  98.       Value := SL.Values[Name];
  99.     end;
  100.     E := Now;
  101.     SL.Clear;
  102.     WriteLn(SL.ClassName, ': ', FormatDateTime(FMT, E - B));
  103.  
  104.     WriteLn('Press [ENTER] to exit ...');
  105.     ReadLn;
  106.   finally
  107.     SL.Free;
  108.     LS.Free;
  109.   end;
  110. end.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement