簡體   English   中英

boost :: iostreams :::: copy似乎過慢

[英]boost::iostreams::::copy Seems Excessively Slow

我正在使用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

是否有人看到我的代碼有問題或對改進我的代碼有建議? 也許花了很長時間,盡管看起來似乎過多。

在令人驚嘆的,絕不令人bio::gzip::best_compression的事件中,似乎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

因此,在我的情況下(不考慮確切原因-可能是數據的性質),答案似乎是更改壓縮級別。

注意:調試時使用VC ++ 2017。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM