Menghuraikan terapung yang diasingkan ruang boleh menjadi tugas yang memakan masa, terutamanya apabila berurusan dengan fail besar. Kaedah tradisional seperti menggunakan aliran C standard boleh menjadi perlahan. Artikel ini meneroka beberapa kaedah cekap untuk menghuraikan terapung dalam C .
Boost Spirit ialah perpustakaan C berkuasa yang menyediakan keupayaan penghuraian lanjutan. Walaupun keluk pembelajaran awalnya, Spirit menawarkan penghuraian yang pantas dan boleh dipercayai. Begini cara untuk menggunakannya:
#include <boost/spirit/include/qi.hpp> namespace qi = boost::spirit::qi; int main() { std::string line = "134.32 3545.87 3425"; double x, y, z; auto it = line.begin(); bool success = qi::phrase_parse(it, line.end(), qi::double_ >> qi::double_ >> qi::double_, qi::blank, data); if (success) { std::cout << "Parsed values: " << x << " " << y << " " << z << std::endl; } return 0; }
Fail dipetakan memori menawarkan cara yang lebih pantas untuk membaca fail ke dalam ingatan tanpa overhed operasi I/O tradisional. Ini boleh mempercepatkan penghuraian dengan ketara:
#include <iostream> #include <fstream> #include <sys/stat.h> #include <sys/mman.h> int main() { std::ifstream file("data.txt"); struct stat statbuf; fstat(file.fileno(), &statbuf); // Memory-map the file char* data = static_cast<char*>(mmap(NULL, statbuf.st_size, PROT_READ, MAP_SHARED, file.fileno(), 0)); // Iterate through the data to parse floats for (char* ptr = data; ptr < data + statbuf.st_size;) { double x, y, z; ptr = std::sscanf(ptr, "%f %f %f", &x, &y, &z); // Parse the float values and perform desired operations } // Unmap the file munmap(data, statbuf.st_size); return 0; }
Pelbagai kaedah penghuraian telah ditanda aras untuk menunjukkan perbezaan kelajuannya. Boost Spirit muncul sebagai yang terpantas, diikuti dengan pendekatan fail dipetakan memori dan aliran C standard. Prestasi yang tepat mungkin berbeza-beza bergantung pada saiz dan kerumitan data.
Menghuraikan terapung yang diasingkan ruang dalam C boleh dioptimumkan menggunakan teknik yang berbeza. Boost Spirit memberikan prestasi tertinggi, tetapi memerlukan lebih pemahaman tentang mekanisme penghuraiannya. Fail yang dipetakan memori menawarkan jalan tengah, mempercepatkan penghuraian sambil mengekalkan kesederhanaan kod. Strim C tradisional kekal sebagai pilihan yang berdaya maju, walaupun lebih perlahan dalam pengiraan.
Atas ialah kandungan terperinci Apakah Kaedah Terpantas untuk Menghuraikan Terapung Berpisah Ruang dalam C ?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!