100,200,400 пока не дойдёт до придела.
var cc1,cc2,cc3:Int64; var tt1,tt2,tt3,tt4,tt5:int64; function ReadArraOfInt(FS:TStream;var value:TArrayOfInt):Boolean; var Count:Integer; P:PByte; begin {TEG SpeedTest} Inc(ST[26],RDTSC-ST[26]); {/TEG} Count:=0; SetLength(Value,0); if FS.Read(Count,SizeOf(Count))< SizeOf(Count) then Exit(False); QueryPerformanceCounter(tt2); SetLength(Value,Count); QueryPerformanceCounter(tt3); tt1:=tt1+tt3-tt2; inc(tt5, Count); if Count>0 then begin P:=@value[0]; cc1:= cc1+Count*SizeOf(Integer); if FS.Read(P^,Count*SizeOf(Integer))<Count*SizeOf(Integer) then exit(False); end; {TEG SpeedTest} Inc(ST[27],RDTSC-ST[26]); {/TEG} exit(True); end;
Чему равно Count на каждой из проверок? Если несколько килобайт, то это большой блок, который выделяется напрямую через ОС, менеджер памяти в этом практически не участвует.
Стикер
Там от единиц байт до 4 кб плюс минус.
tt3-tt2 деленая на 10000. tt5 постоянно.
а похоже, что меняется на 100 именно tt1...и как tt5 может оставаться постоянной, если каждый раз увеличиваться на Count должно?
tt1 и tt5 обнуляются по нажатию кнопки. tt5 остается постоянным tt1 растёт.
Обсуждают сегодня