with stat64 = 12 ms
with PB-functions = 46 ms
with Directory = 29 ms
It seems the Directory-Thing is slower then expected....
Code: Select all
ImportC "": stat64(path.p-utf8, *buf): EndImport
Global Dim buf.q(17); 144 bytes = 18 * 8
Structure stats
size.q
atime.q
mtime.q
ctime.q
EndStructure
Procedure GetFileStats(directory, *stats.stats, file.s = #Empty$)
Select directory
Case -1
stat64(file, @buf())
*stats\size = buf(12)
*stats\atime = buf(4)
*stats\mtime = buf(6)
*stats\ctime = buf(10)
Case -2
*stats\size = FileSize(file)
*stats\atime = GetFileDate(file, #PB_Date_Accessed)
*stats\mtime = GetFileDate(file, #PB_Date_Modified)
*stats\ctime = GetFileDate(file, #PB_Date_Created)
Default
*stats\size = DirectoryEntrySize(directory)
*stats\atime = DirectoryEntryDate(directory, #PB_Date_Accessed)
*stats\mtime = DirectoryEntryDate(directory, #PB_Date_Modified)
*stats\ctime = DirectoryEntryDate(directory, #PB_Date_Created)
EndSelect
EndProcedure
Define version, directory, scanpath.s, start, filename.s, stats.stats
version = 1 ; 2 ; 3
scanpath.s = "/Volumes/BACKUP1/Fotos/"
directory = ExamineDirectory(#PB_Any, scanpath, "*")
start = ElapsedMilliseconds()
While NextDirectoryEntry(directory)
filename.s = DirectoryEntryName(directory)
If DirectoryEntryType(directory) = #PB_DirectoryEntry_File
Select version
Case 1: GetFileStats(-1, stats, scanpath + filename)
Case 2: GetFileStats(-2, stats, scanpath + filename)
Case 3: GetFileStats(directory, stats)
EndSelect
EndIf
Wend
MessageRequester("Result", Str(ElapsedMilliseconds() - start))
FinishDirectory(directory)