BOOST :: iostreams ::::复制似乎太慢了

boost::iostreams::::copy Seems Excessively Slow

本文关键字:iostreams 复制 BOOST      更新时间:2023-10-16

我正在使用 boost::iostreams::::copy在其作为压缩流中的部分的常见作用中。但是,复制一个相当大的压缩流时似乎太慢了:〜30 MB可能需要〜2分钟。

这是我的代码:

std::stringstream compress(std::stringstream& data)
{
    namespace bio = boost::iostreams;
    std::stringstream comp;
    bio::filtering_streambuf<bio::input> out;
    out.push(bio::gzip_compressor(bio::gzip_params(bio::gzip::best_compression)));
    out.push(data);
    bio::copy(out, comp);
    return comp;
}

罪魁祸首是线:

bio::copy(out, comp);

数据在字节中,并且包含nul,如果很重要,但是我需要使用 std::stringstream

有人看到我的代码问题还是对可以改善我的代码的原因有建议?也许只需要这么长时间才过多。

在令人惊叹的 - 不,令人jawd的事件转弯,看来 bio::gzip::best_compression是真正的罪魁祸首。

当我将其更改为bio::gzip::best_speed时,我得到了这些(粗糙(结果:

bio::gzip::best_compression: output size 6589968 bytes     elapsed time: 105881 ms
bio::gzip::best_speed: output size: 6589596 bytes     elapsed time: 6065 ms

因此,在我的情况下,似乎(不确切考虑到数据的性质(,答案是更改压缩级别。

注意:这是DEBUG中的VC 2017。