本文整理自网络,侵删。
program SystemThreadingTest;
{$APPTYPE CONSOLE}
uses System.Diagnostics, System.Threading;
const maxItems = 5000; DataSize = 100000;
procedure DoTest;var matches: integer; i, j: integer; sw: TStopWatch; referenceStr: string;begin Randomize; SetLength(referenceStr, DataSize); for i := low(referenceStr) to high(referenceStr) do referenceStr[i] := Chr(Ord('a') + Random(26));
// parallel matches := 0; sw := TStopWatch.StartNew; TParallel.For(1, maxItems, procedure(Value: integer) var index: integer; found: integer; begin found := 0; for index := low(referenceStr) to high(referenceStr) do if (((Value mod 26) + Ord('a')) = Ord(referenceStr[index])) then inc(found); AtomicIncrement(matches, found); end); Writeln('Parallel matches: ', matches, ' in ', sw.ElapsedMilliseconds, 'ms');
// serial matches := 0; sw := TStopWatch.StartNew; for i := 1 to maxItems do for j := low(referenceStr) to high(referenceStr) do if (((i mod 26) + Ord('a')) = Ord(referenceStr[j])) then inc(matches); Writeln('Serial matches: ', matches, ' in ', sw.ElapsedMilliseconds, 'ms');end;
begin while True do DoTest;end.
相关阅读 >>
Delphi 任务栏显示进度条 createcomobject(clsid_taskbarlist) as itaskbarlist4
Delphi �c 如何使用datasnap获取作为标头传递的标记?
更多相关阅读请进入《Delphi》频道 >>