1GB gibi gerçekten büyük bir dosya wc -lyavaş 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_cacheiki 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_cachegö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;)
0x0Ayetersizliği açısından incelenmesi gerektiği göz önüne alındığında , G / Ç şüphesiz darboğazdır.