Einzelnen Beitrag anzeigen

Glados
(Gast)

n/a Beiträge
 
#1

GetFileSize - welches ist die bessere Funktion?

  Alt 20. Okt 2017, 16:20
Ich teste gerade ein paar bei der Suchmaschine meiner Wahl gefundenen GetFileSize-Funktionen aus und vergleiche sie.
Mir ist aufgefallen, dass die FindFirst-Funktion (die erste) langsamer ist als die zweite.

Habt ihr noch bessere / schnellere?

Hier meine Funde
Delphi-Quellcode:
 function GetFileSizeA(const aFileName: string): Int64;
 var
  SR: TSearchRec;
 begin
  Result := 0;

  if not FileExists(aFileName) then
   Exit;

  if FindFirst(aFileName, faAnyFile and not faDirectory, SR) = 0 then
   try
    Result := SR.Size;
   finally
    System.SysUtils.FindClose(SR)
   end;
 end;

 function GetFileSizeB(FileName: string): Int64;
 var
  Handle: Integer;
  iFileSize: Int64;
 begin
  iFileSize := 0;
  Handle := FileOpen(FileName, fmOpenRead);

  if Handle <> -1 then
   try
    iFileSize := iFileSize + FileSeek(Handle, Int64(0), 2);
   finally
    FileClose(Handle);
   end;

  Result := iFileSize;
 end;

 function GetFileSizeC(aFileName: string): Int64;
 var
  F: TSearchRec;
 begin
  if FindFirst(aFileName, faAnyFile, F) = 0 then
   try
    Int64Rec(Result).Hi := F.FindData.nFileSizeHigh;
    Int64Rec(Result).Lo := F.FindData.nFileSizeLow;
   finally
    System.SysUtils.FindClose(F);
   end;
 end;

Geändert von Glados (20. Okt 2017 um 16:23 Uhr)
  Mit Zitat antworten Zitat