= array [0..1024*1024*1024-1] of byte;
parr = ^tarr;
generic procedure ZeroMem<T>(var x: T); inline;
begin
if (SizeOf(x) mod 8) = 0 then FillQWord(x, SizeOf(x) div 8, 0)
else if (SizeOf(x) mod 4) = 0 then FillDWord(x, SizeOf(x) div 4, 0)
else if (SizeOf(x) mod 2) = 0 then FillWord(x, SizeOf(x) div 2, 0)
else if (SizeOf(x) mod 1) = 0 then FillChar(x, SizeOf(x), 0);
end;
var
p: parr;
t: QWord;
begin
GetMem(p, SizeOf(tarr));
t:=GetTickCount64;
ZeroMem(p^);
t:=GetTickCount64-t;
WriteLn(t);
t:=GetTickCount64;
FillChar(p^, SizeOf(p^), 0);
t:=GetTickCount64-t;
WriteLn(t);
ReadLn;
end.
141
62
В два раза быстрее 😊
НО! Прошу заметить, что это очень маленькие блохи!
Ой... так быстрее FillChar 🤣 оказался... и скорее всего из-за какого-то кеширвоания...
ага, точно, оба варианта дают одинаковых попугаев.... (поменял местами) это кеширование или что-то такое влияет на второй прогон
Обсуждают сегодня