Bolehkah sesiapa mengalahkan prestasi integer saya kepada std::string kod penukaran?
Masalah:
Menukar dengan cekap integer menjadi std::string ialah cabaran yang telah mencetuskan penciptaan pelbagai kaedah. Artikel ini meneroka pendekatan yang berbeza dan menjemput penyerahan untuk membandingkan prestasi mereka.
Kaedah:
Kaedah biasa termasuk:
-
The "C way": Menggunakan a stringstream.
-
sprintf: Selalunya disyorkan untuk prestasi.
-
Lexical_cast Boost: Mempunyai pelaksanaan sendiri yang tidak bergantung pada rentetan.
-
Algoritma Ben: Dioptimumkan untuk desktop dan sistem terbenam.
-
ltoa (bukan standard): Tersedia secara meluas, tetapi penggunaannya mungkin terhad.
Peraturan:
Serahan hendaklah mematuhi yang khusus garis panduan:
- Tukar kedua-dua integer 32-bit yang ditandatangani dan tidak ditandatangani kepada perpuluhan.
- Hasilkan output sebagai std::string.
- Pastikan keserasian dengan threading dan isyarat .
- Anggap watak ASCII set.
- Kendalikan INT_MIN dengan betul pada mesin pelengkap dua.
- Output hendaklah sama dengan versi C kanonik menggunakan aliran rentetan.
- Kompil dan laksanakan pada VC 2010 dan g .
Keputusan:
Serahan yang menang menunjukkan peningkatan prestasi yang ketara:
- Kod Eugene Smith: 8 kali lebih pantas daripada sprintf pada g (http://ideone.com/0uhhX)
- Kod Timo: 15 kali lebih pantas daripada sprintf pada Visual C (http://ideone.com/VpKO3)
Atas ialah kandungan terperinci Bolehkah Anda Mengatasi Kod Penukaran Integer-ke-String Ini?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!
Kenyataan: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