Denn eine wirklich große Datei wie 1 GB wc -l
ist langsam. Haben wir eine schnellere Möglichkeit, die Anzahl der Zeilenumbrüche für eine bestimmte Datei zu berechnen?
wc
haben, zu viel Overhead zu haben, können Sie versuchen, Ihren eigenen zu implementieren foreach byte in file: if byte == '\n': linecount++
. Wenn es in C oder Assembler implementiert ist, wird es meiner Meinung nach nicht schneller, außer vielleicht im Kernelbereich eines RTOS mit höchster Priorität (oder verwenden Sie dafür sogar einen Interrupt - Sie können einfach nichts anderes mit dem System tun. .. in Ordnung, ich schweife ab ;-))
time wc -l some_movie.avi
eine nicht zwischengespeicherte Datei schnell bearbeitet, was dazu führte 5172672 some_movie.avi -- real 0m57.768s -- user 0m0.255s -- sys 0m0.863s
. Was @thrig im Grunde als richtig erweist, erschüttert I / O in diesem Fall Ihre Leistung.
time wc -l some_large_file_smaller_than_cache
zweimal hintereinander durchzuführen und zu sehen, wie schnell der zweite Vorgang ist, time wc -l some_large_file_larger_than_cache
und dann zu sehen, wie sich die Zeit zwischen den Läufen nicht ändert. Bei einer Datei mit ~ 280 MB beträgt die Zeit zwischen 1,7 Sekunden und 0,2 Sekunden, bei einer Datei mit 2 GB jedoch beide Male 14 Sekunden.
/usr/bin/time wc -l <file>
sagt das aus? Was ist Ihre Hardware? Ist es schneller, wenn Sie den Befehl wiederholt ausführen? Wir brauchen wirklich mehr Informationen;)
0x0A
Unversehrtheit überprüft werden muss, ist E / A zweifellos der Engpass.