Wow!
Der Hammer wie hier einige abgehen!
Sehr informativ! Danke für die professionellen Beiträge!!!
Kannst du vll. noch ergänzend die Variationen aufzeigen die du ausprobiert hast und ggf. die Ergebnisse? Mich würden die Unterschiede und die angewandten Methoden der Auswertung interessieren.
Also Variationen habe ich nicht sehr viele probiert. Ich war eher dran das Ding zum laufen zu bringen da die Apostrophe nicht stimmten und das DOS Fenster nur kurz aufblinkte und somit keinen Rückschluß zulies.
RunWait(@ComSpec & ' /k wc -l '&$ReadFile&' | cut -d " " -f 1 > '&$SaveFile, $GNU, @SW_HIDE) ; Das /k läßt das DOS Fenster offen.
RunWait(@ComSpec & ' /k&&cls&& wc -l '&$ReadFile&' | cut -d " " -f 1 > '&$SaveFile, $GNU, @SW_HIDE) ; Mit && kann man mehrere DOS Befehle in einer Zeile ausführen.
Auszug aus dem jeweiligen Befehl mittels --help
Aufruf: wc [OPTION]... [DATEI]...
-c, --bytes Byteanzahl ausgeben
-m, --chars Zeichenanzahl ausgeben
-l, --lines Zeilenanzahl ausgeben
-L, --max-line-length die Länge der längsten Zeile ausgeben
-w, --words Wortanzahl ausgeben
Aufruf: cut [OPTION]... [DATEI]...
-b, --bytes=LIST select only these bytes
-c, --characters=LIST select only these characters
-d, --delimiter=DELIM use DELIM instead of TAB for field delimiter
-f, --fields=LIST select only these fields; also print any line
that contains no delimiter character, unless
the -s option is specified
-n (ignored)
--complement complement the set of selected bytes, characters
or fields.
-s, --only-delimited keine Zeilen ausgeben, die keinen Trenner enthalten
--ouput-delimiter=ZKETTE ZKETTE als Ausgabetrennzeichen benutzen;
Voreinstellung ist das Eingabetrennzeichen
Alles anzeigen
Ich habe letztendlich den _FileReadToArray($File, $CSV) Befehl genommen da dann in $CSV[0] die Anzahl der Zeilen enthalten ist.
Das ganze ist aber sehr langsam (6000ms) aber, wie ihr schon angedeutet habt einfach praktischer da man sich die GNU Installation erspart.
Ich habe dein Skript laufen lassen und ich komme auf folgende Werte:
WinAPI: Read 96MB File #Lines: 2097152 Blocksize: 1024 bytes time: 2848 ms
WinAPI: Read 96MB File #Lines: 2097152 Blocksize: 8192 bytes time: 433 ms
WinAPI: Read 96MB File #Lines: 2097152 Blocksize: 27648 bytes time: 141 ms
WinAPI: Read 96MB File #Lines: 2097152 Blocksize: 65536 bytes time: 90 ms
WinAPI: Read 96MB File #Lines: 2097152 Blocksize: 128000 bytes time: 55 ms
WinAPI: Read 96MB File #Lines: 2097152 Blocksize: 221184 bytes time: 41 ms
WinAPI: Read 96MB File #Lines: 2097152 Blocksize: 351232 bytes time: 40 ms
Autoit: Read 96MB File time: 1606 ms
Ich muss dazu sagen daß ich zwei SSD's im RAID-0 Verbund laufen habe. Die Zeiten sind der Hammer.
@UEZ
Die 165ms sind nicht gelogen. ich habe SSD's und das ist wahrscheinlich der Grund.
@AspirinJunkie
Ich habe deine neue Funktion auch getestet und ich bekomme Werte zwischen 270ms - 380ms mit den Default=Auto Settings.
Ich weis nur nicht warum ich 40ms mit Andy's Testskript erhalte.
Wenn ich jetzt noch herausfinden würde wie ich als Return der _FileReadFast() die Zeilenanzahl bekomme könnte ich mir die _FileReadToArray() Geschichte sparen.
Aber da steige ich leider wissenstechnisch momentan noch aus.