diff --git a/Projects/MMLBenchmark/project1.ico b/Projects/MMLBenchmark/project1.ico new file mode 100644 index 0000000..0341321 Binary files /dev/null and b/Projects/MMLBenchmark/project1.ico differ diff --git a/Projects/MMLBenchmark/project1.lpi b/Projects/MMLBenchmark/project1.lpi new file mode 100644 index 0000000..5f1b696 --- /dev/null +++ b/Projects/MMLBenchmark/project1.lpi @@ -0,0 +1,199 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Projects/MMLBenchmark/project1.lpr b/Projects/MMLBenchmark/project1.lpr new file mode 100644 index 0000000..eb23ee6 --- /dev/null +++ b/Projects/MMLBenchmark/project1.lpr @@ -0,0 +1,139 @@ +program project1; + +{$mode objfpc}{$H+} + +uses + {$IFDEF UNIX}{$IFDEF UseCThreads} + cthreads, + {$ENDIF}{$ENDIF} + Classes, SysUtils, CustApp, + interfaces, // to prevent linking errors. :| + + client, MufasaTypes, + + lclintf; + +type + + { TMMLBenchmark } + + TMMLBenchmark = class(TCustomApplication) + protected + procedure DoRun; override; + public + constructor Create(TheOwner: TComponent); override; + destructor Destroy; override; + procedure WriteHelp; virtual; + end; + +var + bmp: Integer; + + MMLClient: TClient; +{ TMMLBenchmark } + +procedure init; + +begin + MMLClient := TClient.Create(''); + + bmp := MMLClient.MBitmaps.CreateBMP(0, 0); + MMLClient.MBitmaps.GetBMP(bmp).LoadFromFile('/home/merlijn/Programs/simba/wall.bmp'); + MMLClient.IOManager.SetTarget(MMLClient.MBitmaps[bmp]); +end; + +procedure free; +begin + MMLClient.IOManager.SetDesktop; + MMLClient.MBitmaps.FreeBMP(bmp); + MMLClient.Free; +end; + +procedure Benchmark; + +var + t, t2, t3: PtrUInt; + i, c, w, h: integer; + col, tol: integer; + + dummytpa: TPointArray; + +begin + init; + t := gettickcount; + MMLClient.IOManager.GetDimensions(w, h); + + col := 16777215; tol := 30; + + for c := 0 to 2 do // benchmark all CTS'es + begin + MMLClient.MFinder.SetToleranceSpeed(c); + t2 := gettickcount; + for i := 0 to 100 do + begin + MMLClient.MFinder.FindColorsTolerance(dummytpa, col, 0, 0, w-1,h-1, tol); + end; + t3 := gettickcount; + writeln(format('FindColorsTolerance'+#10+ + 'Time spent: %d ms (per %f ms), matches: %d, CTS: %d, Colour: %d, Tolerance %d', + [t3-t2, (t3-t2) / 100.0, length(dummytpa), c, col, tol])); + end; + + free; +end; + +procedure TMMLBenchmark.DoRun; +var + ErrorMsg: String; +begin + // quick check parameters + ErrorMsg:=CheckOptions('h','help'); + if ErrorMsg<>'' then begin + ShowException(Exception.Create(ErrorMsg)); + Terminate; + Exit; + end; + + // parse parameters + if HasOption('h','help') then begin + WriteHelp; + Terminate; + Exit; + end; + + Benchmark; + + { add your program here } + + // stop program loop + Terminate; +end; + +constructor TMMLBenchmark.Create(TheOwner: TComponent); +begin + inherited Create(TheOwner); + StopOnException:=True; +end; + +destructor TMMLBenchmark.Destroy; +begin + inherited Destroy; +end; + +procedure TMMLBenchmark.WriteHelp; +begin + { add your help code here } + writeln('Usage: ',ExeName,' -h'); +end; + +var + Application: TMMLBenchmark; + +{$R *.res} + +begin + Application:=TMMLBenchmark.Create(nil); + Application.Run; + Application.Free; +end. +