我有一个很大的数据文件,我用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 );为了提高速度,我用以下代码初始化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 ) );我的解压缩器看起来像这样:
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 ) );我的问题是,有什么方法可以加速充气(解压缩)操作吗?现在,压缩占用了我大约83%的数据访问时间,我真的需要更快地做到这一点。任何建议都将不胜感激。
发布于 2012-12-11 10:58:39
加快解压缩速度的唯一方法是使压缩后的数据更小,因此需要处理的数据更少。这意味着要花更多的时间进行压缩,假设你并不关心这一端的处理时间。所以你应该选择最好的压缩。
发布于 2017-07-15 01:54:39
至少在Windows上,我们使用zlib C接口测量到了20%的性能提升。在仔细分析之后,发现boost::iostreams::filtering_streambuf和iostream开销是主要的区别。
https://stackoverflow.com/questions/13807800
复制相似问题