Apakah putting atau putchar lebih baik untuk mencetak hanya baris baru?

Mana yang lebih baik (baik dalam performa maupun praktik terbaik) untuk mencetak hanya baris baru:

putchar('\n') or puts("")

Dari apa yang saya pahami, putchar menampilkan satu karakter dan puts menampilkan serangkaian karakter. Lupakan printf.

Saya cenderung menggunakan puts karena lebih pendek, namun melakukan ("") hanya terasa salah.

Mana yang lebih cepat dan lebih baik?


person Insane    schedule 14.01.2016    source sumber
comment
jadi... fputc tidak seharusnya ada dalam daftar opsi itu?, atau hanya putc? Mungkin juga mencakup semuanya (putchar setara dengan putc(ch,stdout))   -  person WhozCraig    schedule 14.01.2016
comment
Secara pribadi, saya lebih suka putchar('\n') tetapi saya tidak punya alasan yang kuat untuk itu. Hanya saja saya tidak menyukai puts karena perilakunya yang tidak konsisten dalam menambahkan baris baru di akhir sedangkan fputs tidak.   -  person 5gon12eder    schedule 14.01.2016
comment
Anda khawatir dengan kinerja konsol buffer yang akan dibaca oleh manusia? Jika saya memberi tahu Anda bahwa salah satunya 8 mikrodetik lebih cepat daripada yang lain, apakah itu menjadi alasan untuk memilih yang menyajikan baris baru ke mata Anda yang menunggu lebih cepat?   -  person Eric Lippert    schedule 14.01.2016
comment
Profil. Tapi saya sangat curiga bahwa makro yang tujuan utamanya adalah menulis satu karakter akan bekerja lebih baik (jika hanya sepele) daripada fungsi tujuan yang lebih umum. Tentu saja, jika Anda baru saja menggunakan puts sebelumnya, caching ikut berperan; kode panas kemungkinan lebih cepat daripada kode dingin meskipun kode panas harus menjalankan beberapa instruksi lagi.   -  person ShadowRanger    schedule 14.01.2016
comment
@EricLippert Tidak khawatir, penasaran.   -  person Insane    schedule 14.01.2016


Jawaban (4)


Perbedaan kecepatan apa pun di antara keduanya tidak akan signifikan, tetapi putchar mungkin lebih cepat karena memerlukan satu argumen char.

Yang jauh lebih penting, putchar('\n') adalah mengatakan apa yang Anda maksud, sedangkan puts("") tidak.

person hobbs    schedule 14.01.2016

Secara teoritis, yang satu memerlukan pointer, dan byte tambahan dan yang lainnya tidak. Selain itu, seseorang mungkin memerlukan lebih banyak instruksi dan berpotensi menyebabkan i-cache, yang bisa berdampak buruk. Namun dalam praktiknya, perbedaan antara keduanya hampir dapat diabaikan.

Namun, saya pribadi masih menggunakan putc atau putchar hanya karena kodenya lebih mudah dibaca dan dipahami orang lain.

person Jason    schedule 14.01.2016

Kompiler yang baik akan mengeluarkan kode optimal yang sama untuk kode di bawah ini, jadi ini bukan masalah kinerja.

putchar('\n');
puts("");

Gunakan salah satu yang menyampaikan maksud kode dengan lebih baik. Hal ini sering kali bergantung pada apa lagi yang sedang dicetak.

// Example 1
putchar('(');
putchar(ch);
putchar(')');

putchar('\n');  // Better choice
// puts("");


// Example 2
puts(name);
puts(rank);
puts(serial_number);

// putchar('\n');  
puts(""); // Better choice
person chux - Reinstate Monica    schedule 14.01.2016

Meskipun put() memungkinkan Anda mengeluarkan string, Anda mengeluarkan string yang hanya memiliki satu karakter (baris baru), jadi hasil dan kinerjanya harus sama dengan menggunakan putchar().

person user4982357    schedule 14.01.2016