Marco Web Center

[an error occurred while processing this directive]

Home: Code Repository: Delphi 2009 Handbook

Project: AnonTiming.dproj

Project Structure

AnonTiming.dpr
program AnonTiming;

uses
  Forms,
  AnonTiming_MainForm in 'AnonTiming_MainForm.pas' {FormAnonTiming};

{$R *.res}

begin
  Application.Initialize;
  Application.MainFormOnTaskbar := True;
  Application.CreateForm(TFormAnonTiming, FormAnonTiming);
  Application.Run;
end.
AnonTiming_MainForm.pas
unit AnonTiming_MainForm;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TFormAnonTiming = class(TForm)
    btnClassic: TButton;
    Memo1: TMemo;
    btnAnon: TButton;
    btnTicks: TButton;
    procedure btnClassicClick(Sender: TObject);
    procedure btnAnonClick(Sender: TObject);
    procedure btnTicksClick(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  FormAnonTiming: TFormAnonTiming;

implementation

{$R *.dfm}

const
  MaxLoop2 = 1000000;

function TimeCode (nLoops: Integer; proc: TProc): string;
var
  t1: TDateTime;
  I: Integer;
begin
  t1 := Now;
  for I := 1 to nLoops do
    proc;
  t1 := now - t1;
  Result := FormatDateTime('nn:ss.zzz', t1);
end;

function TickCode (nLoops: Integer; proc: TProc): string;
var
  nTicks: Integer;
  I: Integer;
begin
  nTicks := GetTickCount;
  for I := 1 to nLoops do
    proc;
  nTicks := GetTickCount - nTicks;
  Result := Format ('%d', [nTicks]);
end;


procedure TFormAnonTiming.btnAnonClick(Sender: TObject);
var
  str1: string;
  str2: AnsiString;
begin
  Memo1.Lines.Add ('Anonymous');

  str1 := 'Marco Cantù';
  Memo1.Lines.Add ('AnsiUpperCase (string): ' +
    TimeCode (MaxLoop2,
      procedure ()
      begin
        str1 := AnsiUpperCase (str1);
      end));

  str2 := 'Marco Cantù';
  Memo1.Lines.Add ('AnsiUpperCase (AnsiString): ' +
    TimeCode (MaxLoop2,
      procedure ()
      begin
        str2 := AnsiUpperCase (str2);
      end));
end;

procedure TFormAnonTiming.btnClassicClick(Sender: TObject);
var
  str1: string;
  str2: AnsiString;
  I: Integer;
  t1: TDateTime;
begin
  Memo1.Lines.Add ('Classic');

  str1 := 'Marco Cantù';
  t1 := Now;
  for I := 1 to MaxLoop2 do
    str1 := AnsiUpperCase (str1);
  t1 := now - t1;
  Memo1.Lines.Add ('AnsiUpperCase (string): ' + FormatDateTime('nn:ss.zzz', t1));

  str2 := 'Marco Cantù';
  t1 := Now;
  for I := 1 to MaxLoop2 do
    str2 := AnsiUpperCase (str2);
  t1 := now - t1;
  Memo1.Lines.Add ('AnsiUpperCase (AnsiString): ' + FormatDateTime('nn:ss.zzz', t1));
end;

procedure TFormAnonTiming.btnTicksClick(Sender: TObject);
var
  str1: string;
  str2: AnsiString;
begin
  Memo1.Lines.Add ('Anonymous Ticks');

  str1 := 'Marco Cantù';
  Memo1.Lines.Add ('AnsiUpperCase (string): ' +
    TickCode (MaxLoop2,
      procedure ()
      begin
        str1 := AnsiUpperCase (str1);
      end));

  str2 := 'Marco Cantù';
  Memo1.Lines.Add ('AnsiUpperCase (AnsiString): ' +
    TickCode (MaxLoop2,
      procedure ()
      begin
        str2 := AnsiUpperCase (str2);
      end));
end;

end.
AnonTiming_MainForm.pas.dfm
object FormAnonTiming: TFormAnonTiming
  Left = 0
  Top = 0
  Caption = 'AnonTiming'
  ClientHeight = 332
  ClientWidth = 628
  Color = clBtnFace
  Font.Charset = DEFAULT_CHARSET
  Font.Color = clWindowText
  Font.Height = -11
  Font.Name = 'Tahoma'
  Font.Style = []
  OldCreateOrder = False
  PixelsPerInch = 96
  TextHeight = 13
  object btnClassic: TButton
    Left = 48
    Top = 32
    Width = 75
    Height = 25
    Caption = 'btnClassic'
    TabOrder = 0
    OnClick = btnClassicClick
  end
  object Memo1: TMemo
    Left = 184
    Top = 32
    Width = 417
    Height = 273
    Lines.Strings = (
      'Memo1')
    TabOrder = 1
  end
  object btnAnon: TButton
    Left = 48
    Top = 72
    Width = 75
    Height = 25
    Caption = 'btnAnon'
    TabOrder = 2
    OnClick = btnAnonClick
  end
  object btnTicks: TButton
    Left = 48
    Top = 112
    Width = 75
    Height = 25
    Caption = 'btnTicks'
    TabOrder = 3
    OnClick = btnTicksClick
  end
end
HTML file generated by PasToWeb, a tool by Marco Cantù
Copyright 2008 Marco Cantù