Untuk file yang sangat besar seperti 1GB wc -lterjadi lambat. Apakah kita memiliki cara yang lebih cepat menghitung jumlah baris baru untuk file tertentu?
wcmemiliki 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.avipada 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_cachedua kali berturut-turut dengan cepat dan lihat seberapa cepat operasi kedua, lalu time wc -l some_large_file_larger_than_cachedan 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;)
0x0Ainesnya, I / O tidak diragukan lagi adalah hambatannya.