Delphi XE4的新功能,在宣告String後就相當於一個物件,有一些方法可以操作,像是常用的Length, ToLower, ToUpper等方法,與Java, C#之類的語言相同。之前的版本是使用function/procedure進行這些操作,所以寫個測試程式看看速度相差多少。

  

program Project1;

{$APPTYPE CONSOLE}
{$R *.res}

uses
  System.SysUtils,
  Winapi.Windows;

var
  S, T: String;
  I, t0, t1: Integer;
  L: Integer;

begin
  try
    t0 := GetTickCount;
    S := '1234567890';

    for I := 0 to 999999 do
    begin
      T := S.ToLower;
      T := S.ToUpper;
    end;

    t1 := GetTickCount;
    WriteLn(IntToStr(t1 - t0) + 'ms');

    t0 := GetTickCount;
    S := '1234567890';

    for I := 0 to 999999 do
    begin
      T := LowerCase(S);
      T := UpperCase(S);
    end;

    t1 := GetTickCount;
    WriteLn(IntToStr(t1 - t0) + 'ms');
  except
    on E: Exception do
      Writeln(E.ClassName, ': ', E.Message);
  end;

end.

 

Win32 Release:

String method:515ms

function: 78ms

所以看來這個功能雖然讓Object Pascal更像是一個純物件導向語言,但速度更慢,追求速度應該還是繼續使用原本的方法,這樣與之前版本相容性更好。Free Pascal也沒支援這個特性。

arrow
arrow
    全站熱搜

    bagatelles 發表在 痞客邦 留言(0) 人氣()