Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- program Project1;
- {$IFDEF FPC}
- {$mode delphi}
- {$ENDIF}
- uses
- {$IFDEF FPC}
- FGL
- {$ELSE}
- System.Generics.Collections
- {$ENDIF},
- Classes, SysUtils;
- type
- TMyList = class({$IFDEF FPC}TFPGMap{$ELSE}TDictionary{$ENDIF}<Integer, string>)
- {$IFNDEF FPC}
- private
- function GetKeyData(AKey: Integer): string;
- public
- // just for Delphi compatible
- property KeyData[AKey: Integer]: string read GetKeyData;
- {$ENDIF}
- end;
- {$IFNDEF FPC}
- function TMyList.GetKeyData(AKey: Integer): string;
- begin
- if not TryGetValue(AKey, Result) then
- Result := '';
- end;
- {$ENDIF}
- const
- COUNT = 10000;
- FMT = 'hh:nn:ss.zzz';
- var
- I: Integer;
- B, E: TDateTime;
- Name: string = '';
- Value: string = '';
- SL: TStrings;
- LS: TMyList;
- begin
- SL := TStringList.Create;
- LS := TMyList.Create;
- try
- B := Now;
- // add name and value
- for I := 1 to COUNT do
- begin
- Name := IntToStr(I);
- SL.Add(Name + '=' + Name);
- end;
- // get value from name
- for I := 1 to COUNT do
- begin
- Name := IntToStr(I);
- Value := SL.Values[Name];
- end;
- E := Now;
- SL.Clear;
- WriteLn(SL.ClassName, ': ', FormatDateTime(FMT, E - B));
- B := Now;
- // add name and value
- for I := 1 to COUNT do
- LS.Add(I, IntToStr(I));
- // get value from name
- for I := 1 to COUNT do
- Value := LS.KeyData[I];
- E := Now;
- LS.Clear;
- WriteLn(LS.ClassName, ': ', FormatDateTime(FMT, E - B));
- B := Now;
- // add name and value
- for I := 1 to COUNT do
- LS.Add(I, IntToStr(I));
- // get value from name
- for I := 1 to COUNT do
- Value := LS.KeyData[I];
- E := Now;
- LS.Clear;
- WriteLn(LS.ClassName, ': ', FormatDateTime(FMT, E - B));
- B := Now;
- // add name and value
- for I := 1 to COUNT do
- begin
- Name := IntToStr(I);
- SL.Add(Name + '=' + Name);
- end;
- // get value from name
- for I := 1 to COUNT do
- begin
- Name := IntToStr(I);
- Value := SL.Values[Name];
- end;
- E := Now;
- SL.Clear;
- WriteLn(SL.ClassName, ': ', FormatDateTime(FMT, E - B));
- WriteLn('Press [ENTER] to exit ...');
- ReadLn;
- finally
- SL.Free;
- LS.Free;
- end;
- end.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement