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);
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"));
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:
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!