1GB gibi gerçekten büyük bir dosya wc -l
yavaş olur. Belirli bir dosya için yeni satır sayısını hesaplamanın daha hızlı bir yolu var mı?
wc
Çok fazla ek yüke sahip olduğunuzdan şüpheleniyorsanız , kendiniz uygulamayı deneyebilirsiniz foreach byte in file: if byte == '\n': linecount++
. C veya montajcıda uygulanırsa, belki de en yüksek önceliğe sahip bir RTOS'ta çekirdek alanı dışında (veya bunun için bir kesme kullanıldığında), sistemle başka bir şey yapamazsınız. .. tamam, ben ;-))
time wc -l some_movie.avi
önbelleğe alınmamış bir dosyada hızlı bir sonuç yaptım 5172672 some_movie.avi -- real 0m57.768s -- user 0m0.255s -- sys 0m0.863s
. Temelde @ thrig doğru olduğunu kanıtlar, I / O bu durumda performansınızı paramparça eder.
time wc -l some_large_file_smaller_than_cache
iki kez hızlı bir şekilde iki kez yapın ve ikinci işlemin ne kadar hızlı olduğunu time wc -l some_large_file_larger_than_cache
görün ve zamanlar arasındaki sürenin nasıl değişmediğini görün. Burada ~ 280MB'lık bir dosya için süre 1.7 saniyeden 0.2 saniyeye kadar gider, ancak 2GB'lık bir dosya için her iki seferde 14 saniyedir.
/usr/bin/time wc -l <file>
diyor? Donanımınız nedir? Komutu tekrar tekrar çalıştırmanız daha hızlı mıdır? Gerçekten daha fazla bilgiye ihtiyacımız var;)
0x0A
yetersizliği açısından incelenmesi gerektiği göz önüne alındığında , G / Ç şüphesiz darboğazdır.