Einzelnen Beitrag anzeigen

Daniel
(Co-Admin)

Registriert seit: 30. Mai 2002
Ort: Hamburg
13.920 Beiträge
 
Delphi 10.4 Sydney
 
#11

AW: TFileStream.Write langsam, wenn man nur 1 Zeichen schreibt?

  Alt 4. Jan 2017, 20:45
Möglicherweise musst Du Dich noch mit dem Windows Dateicache auseinandersetzen. Ein und derselbe Code habe hier auf dem System zeigt höchst unterschiedliche Laufzeiten. Die 500 Mbytes benötigen zwischen 1.6 und 8 Sekunden, um ihren Weg auf die Platte zu finden.

Delphi-Quellcode:
program Project1;

{$APPTYPE CONSOLE}
{$R *.res}

uses
  System.SysUtils, System.Classes,
  System.Diagnostics;

const
  ZwanzichMB = 1024 * 1024 * 20;
var
  LStream : TFileStream;
  LBytes : TBytes;
  LWatch : TStopwatch;
  i : integer;
begin
  DeleteFile('C:\Temp\wuppdi.dat');

  WriteLn('bereite Daten vor ...');
  SetLength( LBytes, ZwanzichMB );
  FillChar( LBytes[Low(LBytes)], Length(LBytes), 42 );

  WriteLn('schreibe Daten ...');
  LWatch := TStopwatch.StartNew;

  LStream := TFileStream.Create( 'C:\Temp\wuppdi.dat', fmCreate OR fmOpenWrite );
  TRY
    for i := 1 to 25 do
      LStream.Write( LBytes, Length(LBytes) );
  FINALLY
    LStream.Free;
  END;

  LWatch.Stop;
  WriteLn( 'fertig nach ', LWatch.ElapsedMilliseconds, 'msecs' );
  ReadLn;
end.
Daniel R. Wolf
mit Grüßen aus Hamburg
  Mit Zitat antworten Zitat