สำหรับไฟล์ขนาดใหญ่เช่น 1GB นั้นwc -l
จะช้า เรามีวิธีคำนวณจำนวนบรรทัดใหม่สำหรับไฟล์ที่ต้องการได้เร็วขึ้นหรือไม่
wc
foreach byte in file: if byte == '\n': linecount++
หากมีการใช้งานใน C หรือแอสเซมเบลอร์ฉันไม่คิดว่ามันจะเร็วขึ้นยกเว้นในพื้นที่เคอร์เนลใน RTOS ที่มีลำดับความสำคัญสูงสุด (หรือแม้แต่ใช้การขัดจังหวะสำหรับสิ่งนั้น - คุณไม่สามารถทำสิ่งใดกับระบบ .. เอาล่ะฉันพูดนอกเรื่อง ;-))
time wc -l some_movie.avi
ในไฟล์ uncached 5172672 some_movie.avi -- real 0m57.768s -- user 0m0.255s -- sys 0m0.863s
ผลใน ซึ่งโดยทั่วไปพิสูจน์แล้วว่า @thrig ถูกต้อง I / O จะตัดการแสดงของคุณในกรณีนี้
time wc -l some_large_file_smaller_than_cache
สองครั้งอย่างต่อเนื่องและดูว่าการดำเนินการที่สองนั้นรวดเร็วเพียงใดtime wc -l some_large_file_larger_than_cache
และดูว่าเวลาไม่เปลี่ยนแปลงระหว่างการทำงานอย่างไร สำหรับไฟล์ ~ 280MB ที่นี่เวลาเปลี่ยนจาก 1.7 วินาทีเป็น 0.2 วินาที แต่สำหรับไฟล์ 2GB นั่นคือ 14 วินาทีทั้งสองครั้ง
/usr/bin/time wc -l <file>
พูดอะไรฮาร์ดแวร์ของคุณหรือไม่ มันเร็วขึ้นไหมถ้าคุณรันคำสั่งซ้ำ ๆ ? เราต้องการข้อมูลเพิ่มเติมจริง ๆ )
0x0A
I / O จึงไม่ต้องสงสัยเลยว่าคอขวด