首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >提升IO流和ZLib速度

提升IO流和ZLib速度
EN

Stack Overflow用户
提问于 2012-12-11 03:30:56
回答 2查看 2.1K关注 0票数 5

我有一个很大的数据文件,我用Zlib使用boost IOStreams和过滤流缓冲器进行了压缩:

代码语言:javascript
复制
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库:

代码语言:javascript
复制
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 ) );

我的解压缩器看起来像这样:

代码语言:javascript
复制
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%的数据访问时间,我真的需要更快地做到这一点。任何建议都将不胜感激。

EN

回答 2

Stack Overflow用户

发布于 2012-12-11 10:58:39

加快解压缩速度的唯一方法是使压缩后的数据更小,因此需要处理的数据更少。这意味着要花更多的时间进行压缩,假设你并不关心这一端的处理时间。所以你应该选择最好的压缩。

票数 3
EN

Stack Overflow用户

发布于 2017-07-15 01:54:39

至少在Windows上,我们使用zlib C接口测量到了20%的性能提升。在仔细分析之后,发现boost::iostreams::filtering_streambuf和iostream开销是主要的区别。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13807800

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档