Untuk file yang sangat besar seperti 1GB wc -l
terjadi lambat. Apakah kita memiliki cara yang lebih cepat menghitung jumlah baris baru untuk file tertentu?
wc
memiliki terlalu banyak overhead, Anda dapat mencoba menerapkannya sendiri foreach byte in file: if byte == '\n': linecount++
. Jika diimplementasikan dalam C atau assembler saya tidak berpikir itu akan menjadi lebih cepat, kecuali mungkin dalam ruang kernel pada RTOS dengan prioritas tertinggi (atau bahkan menggunakan interupsi untuk itu - Anda tidak dapat melakukan hal lain dengan sistem. .. baiklah, saya ngelantur ;-))
time wc -l some_movie.avi
pada file yang tidak di-cache, menghasilkan 5172672 some_movie.avi -- real 0m57.768s -- user 0m0.255s -- sys 0m0.863s
. Yang pada dasarnya membuktikan @ thrig benar, I / O menghancurkan kinerja Anda dalam hal ini.
time wc -l some_large_file_smaller_than_cache
dua kali berturut-turut dengan cepat dan lihat seberapa cepat operasi kedua, lalu time wc -l some_large_file_larger_than_cache
dan lihat bagaimana waktu tidak berubah di antara proses yang berjalan. Untuk file ~ 280MB di sini, waktunya berubah dari 1,7 detik menjadi 0,2 detik, tetapi untuk file 2GB adalah 14 detik dua kali.
/usr/bin/time wc -l <file>
dikatakan? Apa perangkat keras Anda? Apakah lebih cepat jika Anda menjalankan perintah berulang kali? Kami benar-benar memerlukan informasi lebih lanjut;)
0x0A
inesnya, I / O tidak diragukan lagi adalah hambatannya.