program LEA256CTRSpeedTest; // Speed Reference: Approximately 120 MB/sec. (Intel Core i3-9100) {$APPTYPE CONSOLE} uses Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, LEA256CTR; const FACTOR = 1024; const BUFFER_SIZE = FACTOR * FACTOR; procedure Main(); var Bytes: TBytes; var Keys: TLEA256CTRKeys; var NumbersOnce: TLEA256CTRNumbersOnce; var Context: TLEA256CTRContext; var MinI: Integer; var MaxI: Integer; var MinJ: Integer; var MaxJ: Integer; var I: Integer; var J: Integer; var TS: UInt64; var TE: UInt64; var MBPS: string; begin try SetLength(Bytes, BUFFER_SIZE); except WriteLn('Error: Out of memory.'); Exit; end; Keys[0] := $10101010; Keys[1] := $20202020; Keys[2] := $30303030; Keys[3] := $40404040; Keys[4] := $50505050; Keys[5] := $60606060; Keys[6] := $70707070; Keys[7] := $80808080; NumbersOnce[0] := $10101010; NumbersOnce[1] := $20202020; NumbersOnce[2] := $30303030; NumbersOnce[3] := $40404040; LEA256CTR_Initialize(Context, Keys, NumbersOnce); WriteLn('Generating 1 GB of keystream. Please wait...'); MinI := 0; MaxI := FACTOR - 1; MinJ := 0; MaxJ := BUFFER_SIZE - 1; TS := GetTickCount64; for I := MinI to MaxI do begin for J := MinJ to MaxJ do begin Bytes[J] := LEA256CTR_GenerateByte(Context); end; end; TE := GetTickCount64; try MBPS := FormatFloat('#,##0.00;-#,##0.00;0.00', FACTOR / ((TE - TS) / 1000)); except MBPS := '?'; end; WriteLn('Speed: ' + MBPS + ' MB/sec.'); LEA256CTR_Burn(Context); end; begin Main; end.