Mam dużego pliku danych Mam skompresowanym Zlib użyciu iostreams Boost i bufory strumieniowych filtrowanie:doładowania IO Stream i ZLib przyspieszyć
boost::iostreams::array_source uncompressedArray(reinterpret_cast< const char* >(&uncompressedData[0]), uncompressedData.size());
boost::iostreams::filtering_streambuf<boost::iostreams::output> out;
out.push(*m_compressor);
out.push(boost::iostreams::char_back_inserter(compressedData));
boost::iostreams::copy(uncompressedArray, out);
Dla prędkości ja inicjalizacji biblioteki zlib z następujących czynności:
boost::iostreams::zlib_params params;
params.level = boost::iostreams__zlib::best_speed;
params.mem_level = 9;
m_compressor.reset(new boost::iostreams::zlib_compressor(params, 131072));
m_decompressor.reset(new boost::iostreams::zlib_decompressor(params, 131072));
Moja dekompresor wygląda następująco:
boost::iostreams::array_source compressedArray(reinterpret_cast< const char* >(&compressedData[0]), compressedData.size());
boost::iostreams::filtering_streambuf<boost::iostreams::input> m_in;
m_in.push(*m_decompressor);
m_in.push(compressedArray);
boost::iostreams::copy(m_in, boost::iostreams::char_back_inserter(uncompressedData));
Moje pytanie brzmi, są tam Czy mogę przyspieszyć proces nadmuchania (dekompresji)? Obecnie kompresja zajmuje około 83% czasu dostępu do danych i naprawdę muszę to przyspieszyć. Wszelkie sugestie będą bardzo mile widziane.