我有一个大的数据文件,我用Zlib使用boost IOStreams和过滤流缓冲区压缩:
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 );
Run Code Online (Sandbox Code Playgroud)
为了速度我正在使用以下内容初始化zlib库:
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 ) );
Run Code Online (Sandbox Code Playgroud)
我的解压缩器看起来像这样:
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 ) );
Run Code Online (Sandbox Code Playgroud)
我的问题是,有什么方法可以加快膨胀(减压)操作?现在,压缩占据了我数据访问时间的大约83%,我真的需要更快地实现这一点.任何建议将不胜感激.