Ya, menjalankan verbose akan memperlambat aplikasi Anda.
Berapa banyak tergantung pada aplikasinya.
Setiap pencetakan ke terminal akan membutuhkan waktu pemrosesan tambahan. Dalam hal menggunakan printf() atau salah satu dari saudara perempuannya, ini adalah pemborosan pemrosesan yang cukup banyak.
Juga, terminal harus berurusan dengan data itu. Ada ruang buffer dalam jumlah terbatas antara aplikasi dan terminal, dan saluran IO akan memblokir sampai ada cukup ruang dalam buffer tersebut untuk benar-benar mengeluarkan data. Aplikasi biasanya tidak dapat dilanjutkan saat pemblokiran ini berlangsung.
Selain itu, tindakan menampilkan teks debug pada terminal akan menghabiskan siklus pemrosesan. Sekali lagi, ini bergantung pada aplikasi (jumlah debug), program terminal (font yang digunakan, efek, dll.) dan bahkan driver X windows yang digunakan (akselerasi perangkat keras, dll.).
time
program dapat digunakan untuk menentukan dengan cukup akurat berapa lama waktu yang diperlukan untuk menjalankan perintah. Menjalankan program yang sama dua kali sepanjang waktu, sekali dengan debugging, dan sekali tanpa, akan menunjukkan kepada Anda seberapa besar perbedaannya. Saya akan menyarankan menjalankan perintah satu kali sebelum melakukan tes untuk memastikan bahwa caching sama untuk kedua tes menjalankan perintah. Anda tidak ingin memiringkan hasil dengan menjalankan proses kedua lebih cepat karena sebagian besar data di-cache oleh proses pertama sekarang, bukan...
Dalam kasus aplikasi multithread, hanya utas yang melakukan keluaran debug yang benar-benar akan diblokir.
Itu tergantung pada aplikasi yang Anda jalankan. Namun, secara umum, kami dapat mengatakan bahwa verbose akan memperlambat aplikasi Linux yang paling umum karena mereka harus menyinkronkan aksinya antara stdout dan I/O atau batas prosesor.
Menggunakan yes
sebagai uji kasus pada OS X 10.7, tampaknya penting jika Anda mencetak banyak keluaran ke terminal, seperti yang diharapkan.
Mengukur ini sedikit lebih jauh, saya menjalankan yes
selama 5 detik, dalam satu kasus mencetak output ke terminal dan menyimpannya ke file (dengan tee
), dalam kasus lain melakukan hal yang sama kecuali mengarahkan ulang stdout
ke /dev/null
:
yes | tee yeslog_term & sleep 5 && killall yes && wc -l yeslog_term
yes | tee yeslog_noterm > /dev/null & sleep 5 && killall yes && wc -l yeslog_noterm
Kasus 1. memberikan 2371584 baris dan kasus 2. berikan 136421376 baris, atau 57 kali lebih banyak. 'Kinerja' yes
(diukur dengan jumlah baris yang dicetak per satuan waktu) dalam hal ini 57 kali lebih lambat .
Satu catatan tambahan di sini adalah saya menggunakan yes
bersama dengan tee
di sini, yang mungkin sedikit memengaruhi hasil, namun menurut saya hasilnya masih valid.
Indikasi lain bahwa program melambat adalah menjalankan yes
saat mengeluarkan ke terminal, terminal menggunakan sekitar 100% CPU dan yes
hanya sekitar 37%, saat menjalankan yes
tanpa mengeluarkan ke terminal, ia menggunakan 100% penuh (Ini pada mesin multi-core, jadi yes
bisa menggunakan lebih banyak CPU jika bisa, kecuali diperlambat oleh terminal).