[英]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.