Adakah C `ifstream` Sentiasa Lambat Daripada `fscanf`?

Susan Sarandon
Lepaskan: 2024-11-12 11:15:02
asal
557 orang telah melayarinya

Is C   `ifstream` Always Slower Than `fscanf`?

Meningkatkan Prestasi IOStream

Pelbagai pengguna C yang mempelajari C lebih suka untuk terus menggunakan keluarga fungsi printf / scanf walaupun semasa mengekod dalam C, kerana antara muka yang boleh diakses dan keupayaan penyetempatan. Walau bagaimanapun, kebimbangan prestasi mungkin timbul apabila membandingkannya dengan ifstream C. Terutamanya, fscanf diperhatikan secara konsisten mengatasi prestasi ifstream.

Teknik Pengoptimuman untuk IOStreams

Untuk meningkatkan prestasi IOStreams, pertimbangkan teknik berikut:

Menimbal dengan pubsetbuf()

Meningkatkan saiz penimbal mengurangkan hit HDD dan panggilan sistem, sekali gus meningkatkan prestasi. Tetapkan penimbal dengan mengakses pelaksanaan streambuf menggunakan pubsetbuf().

char Buffer[N];

std::ifstream file("file.txt");

file.rdbuf()->pubsetbuf(Buffer, N);
Salin selepas log masuk

Pengendalian Tempatan

Locale boleh memberi kesan kepada prestasi disebabkan penukaran aksara dan panggilan sistem yang kompleks. Pilih tempat C lalai, yang dioptimumkan untuk penukaran minimum dan keseragaman merentas mesin, untuk mengelakkan overhed ini.

Penyegerakan dengan sync_with_stdio()

Parameter ini tidak menunjukkan peningkatan prestasi yang ketara dalam ujian kami .

Tanda Aras dan Keputusan

Tanda aras kami menggunakan program ujian mudah mendedahkan hasil yang berbeza-beza merentas platform dan penyusun yang berbeza. Hasilnya menunjukkan bahawa prestasi IOStreams bergantung kepada pelaksanaan.

Berikut ialah penemuan daripada pelbagai penanda aras:

g 4.7.2-2ubuntu1, -O3, Ubuntu 11.10 x86_64

  • C 25% lebih pantas

g 4.4.5, -O3, Ubuntu Linux 10.10 x86_64

  • C 17% lebih pantas

g i686-apple-darwin10-g -4.2.1 (GCC) 4.2.1, mac mini, ram 4GB

  • C 111% lebih perlahan

clang 3.8.0-2ubuntu4, Kubuntu 16.04 Linux 4.8-rc3

  • C 66% lebih pantas
  • >

Keputusan ini menekankan kepentingan kualiti pelaksanaan dalam pengoptimuman prestasi IOStreams.

Atas ialah kandungan terperinci Adakah C `ifstream` Sentiasa Lambat Daripada `fscanf`?. 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