[DUG] Saving aray
russell
russell at belding.co.nz
Mon Jul 7 21:50:25 NZST 2014
Writing and reading integers to and from disk is fast. Writing 1.5 mil integers takes under a ms on a test here.
Sample play …
Var
Writecount : integer;
ArrJBird : array of integer;
fStream : TFilestream;
dtstart, dtEnd : TDateTime;
begin
randomize;
setLength(ArrJBird, 1500000);
for i:=0 to 1500000-1 do ArrJBird[i] := random(1000);
dtstart := Now;
fStream := TFileStream.Create('c:\temp\myFileOfInts.txt',fmCreate);
fStream.Seek(0,soFromBeginning);
writeCount := sizeof(integer)*1500000;
fStream.Write(ArrJBird[0], writeCount);
showmessage('101st int='+inttostr(arrJBird[101]));
fStream.Destroy;
Application.ProcessMessages;
for i:=0 to 1500000-1 do ArrJBird[i] :=-1;
fStream := TFileStream.Create('c:\temp\myFileOfInts.txt',fmOpenRead);
fStream.Seek(0,soFromBeginning);
fStream.read(ArrJBird[0],writeCount);
showmessage('101st int='+inttostr(ArrJBird[101]));
dtEnd := now;
showmessage('write to and read from time: '+FloatToStr(dtEnd - dtStart));
// cleanup;
From: delphi-bounces at listserver.123.net.nz [mailto:delphi-bounces at listserver.123.net.nz] On Behalf Of John Bird
Sent: Monday, 7 July 2014 8:35 p.m.
To: NZ Borland Developers Group - Delphi List
Subject: [DUG] Saving aray
I have a program that builds a very large array (over 1,500,000) of integers, and the calculation to fill the array takes quite a while – around 40-50 secs. If there is a quick way to do it, I would save the array to disk if it was faster than recalculating it the next time.
I am guessing that writing the elements to strings and using CSV etc would be quite slow, as it involves quite a lot of processing. I will run a test to see.
Is there any really fast way to save such an array to disk? The numbers range between 0 and 256 if that helps.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://listserver.123.net.nz/pipermail/delphi/attachments/20140707/5f94ac85/attachment-0001.html
More information about the Delphi
mailing list