Rumah > pembangunan bahagian belakang > C++ > Bolehkah Mencampurkan C Stream dengan C's printf Meningkatkan Kelajuan Output?

Bolehkah Mencampurkan C Stream dengan C's printf Meningkatkan Kelajuan Output?

Linda Hamilton
Lepaskan: 2024-11-06 10:40:03
asal
896 orang telah melayarinya

Can Mixing C   Streams with C's printf Improve Output Speed?

Mencampurkan C Stream dan C printf untuk Output Lebih Pantas

Mencampurkan strim C (cout) dan fungsi printf C sememangnya boleh meningkatkan kelajuan output, terutamanya apabila mengendalikan set data yang besar. Secara umumnya selamat untuk menggunakan pendekatan ini, mengambil langkah berjaga-jaga untuk membuang penimbal sebelum beralih antara kaedah.

Berikut ialah analisis terperinci bagi coretan kod yang dicadangkan:

cout << "Hello" << endl;
cout.flush();

for (int i=0; i<1000000; ++i) {
    printf("World!\n");
}
fflush(stdout);

cout << "last line" << endl;
cout << flush;
Salin selepas log masuk

Kebaikan:

  • Siram Sebelum Bertukar: Siram penimbal memastikan semua data daripada strim C dikeluarkan sebelum beralih kepada printf.
  • Pengoptimuman dalam Senario Tertentu: Khususnya, menggunakan printf untuk gelung yang meluas dan operasi output boleh menghasilkan peningkatan prestasi.

Keburukan:

  • Kebergantungan Pelaksanaan: Mencampurkan aliran dan printf adalah bergantung kepada pelaksanaan; keuntungan prestasi yang tepat mungkin berbeza-beza merentas sistem dan penyusun yang berbeza.

Tanda Aras dan Pengoptimuman:

Untuk memberikan paparan yang lebih komprehensif, pertimbangkan penanda aras prestasi berikut:

// Various output techniques
void use_printf() { ... }
void use_puts() { ... }
void use_cout() { ... }
void use_cout_unsync() { ... }
void use_stringstream() { ... }
void use_endl() { ... }
void use_fill_n() { ... }
void use_write() { ... }

int main() { 
    show_time(use_printf, "Time using printf");
    show_time(use_puts, "Time using puts");
    show_time(use_cout, "Time using cout (synced)");
    show_time(use_cout_unsync, "Time using cout (un-synced)");
    show_time(use_stringstream, "Time using stringstream");
    show_time(use_endl, "Time using endl");
    show_time(use_fill_n, "Time using fill_n");
    show_time(use_write, "Time using write");
    return 0;
}
Salin selepas log masuk

Keputusan:

  • printf dan menawarkan kelebihan kelajuan yang besar apabila menulis ke peranti NUL.
  • cout berprestasi lebih baik apabila menulis ke fail sebenar.
  • Mengelakkan endl meningkatkan prestasi dengan ketara.
  • cout.write memberikan masa output terpantas.

Kesimpulan:

  • Gunakan strim seperti cout untuk cetakan mudah, sambil menempah printf untuk operasi output yang meluas.
  • Siram penimbal sebelum bertukar antara kaedah.
  • Pertimbangkan untuk mengelakkan endl memihak pemisah baris eksplisit dengan "n".

Atas ialah kandungan terperinci Bolehkah Mencampurkan C Stream dengan C's printf Meningkatkan Kelajuan Output?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan