Hallo Eukalyptus,
Deine Idee ist gut. Ich habe zwar nicht nach dieser UDF im englischen Forum gesucht. Doch ich habe kurz was eigenes gemacht.
Der Trick ist wirklich, dass man die Rückgabewerte immer nur in eine Variable schreibt.
Mittels einem Adlibregister Timer wird dann z.B. alle 1 Sekunde diese Variable gschrieben und geleert.
Für 100'000 Werte benötigt dieses Script nun nur 1.2 Sekunden!
Spoiler anzeigen
Global $sLogfile = ""
Dim Const $LogfilePath = @ScriptDir & "\_Logfile.log"
FileDelete($LogfilePath)
AdlibRegister("_LogfileWriteTimer", 1000)
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]$Timer = TimerInit()
For $i = 1 to 100000
_AddToLogfile($i)
Next
$End = TimerDiff($Timer)
_AddToLogfile($End)
_Exit()
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]Func _AddToLogfile($ReturnValueForLogfile)
$sLogfile &= @YEAR & "-" & @MON & "-" & @MDAY & " " & @HOUR & ":" & @MIN & ":" & @SEC & " : " & $ReturnValueForLogfile & @CRLF
EndFunc ;==>_AddToLogfile
Func _LogfileWriteTimer()
FileWriteLine($LogfilePath, $sLogfile)
$sLogfile = ""
EndFunc ;==>_LogfileWriteTimer
Func _Exit()
_LogfileWriteTimer() ;Write the last time.
Exit
EndFunc ;==>_Exit
Dabei habe ich herausgefunden, dass der Befehl
[autoit]$sLogfile &= @YEAR & "-" & @MON & "-" & @MDAY & " " & @HOUR & ":" & @MIN & ":" & @SEC & " : " & $ReturnValueForLogfile & @CRLF
[/autoit]sehr schnell ist. Wenn man ihn allerdins in
[autoit]$sLogfile = $sLogfile & @YEAR & "-" & @MON & "-" & @MDAY & " " & @HOUR & ":" & @MIN & ":" & @SEC & " : " & $ReturnValueForLogfile & @CRLF
[/autoit]abändert, dauert das Faktor 5 bis 10 länger!
So allerdings bin ich absolut zufrieden mit AutoIt!
Was meint ihr zu der Geschwindigkeit?
Grüsse Veronesi