Adakah Prestasi C IOStream Sebenarnya Lebih Lambat Daripada printf/scanf?

Barbara Streisand
Lepaskan: 2024-11-07 00:57:02
asal
832 orang telah melayarinya

Is C   IOStream Performance Actually Slower Than printf/scanf?

Cara Mengoptimumkan Prestasi IOStream dalam C

Pengguna C selalunya lebih suka keluarga fungsi printf/scanf berbanding C IOStreams, walaupun antara muka yang terakhir kelebihan. Kebimbangan prestasi sering disebut sebagai sebab utama untuk pilihan ini.

Penimbalan

Membesarkan saiz penampan streambuf asas boleh meningkatkan prestasi dengan ketara dengan mengurangkan hits dan sistem HDD panggilan. Ini dilakukan dengan:

char Buffer[N];
std::ifstream file("file.txt");
file.rdbuf()->pubsetbuf(Buffer, N);
Salin selepas log masuk

Pengendalian Tempatan

Tempatan boleh memperkenalkan overhed prestasi disebabkan penukaran aksara, penapisan dan penghantaran dinamik. Menetapkan tempattempat kepada tempattempat C lalai, yang melumpuhkan operasi ini, boleh meningkatkan prestasi:

std::locale::global(std::locale("C"));
Salin selepas log masuk

Penyegerakan

Penyegerakan dengan C stdio (std::ios_base: :sync_with_stdio(false)) tidak menawarkan faedah prestasi yang boleh dilihat.

Pengukuran

Penanda aras menggunakan penyusun dan platform berbeza mendedahkan hasil yang berbeza-beza:

  • g 3.4.2 pada SUSE 10p3: ~20% kelembapan untuk C
  • g 4.7.2 pada Ubuntu 11.10: C 25% lebih pantas
  • g 4.4.5 pada Ubuntu Linux 10.10: C 17% lebih pantas
  • g pada macOS X: C 111% lebih perlahan
  • clang 3.8.0 pada Kubuntu 16.04: C 66% lebih pantas

Hasil ini menunjukkan bahawa peningkatan prestasi IOStream berbeza-beza bergantung pada pelaksanaan pelaksanaan tertentu. Oleh itu, tiada penyelesaian universal untuk mengoptimumkan IOStreams merentas platform.

Atas ialah kandungan terperinci Adakah Prestasi C IOStream Sebenarnya Lebih Lambat Daripada printf/scanf?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
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
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!