[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