Есть библиотека snappy, которая сжимает/распаковывает стринги C++. Требуется обработать входной поток этой библиотекой и послать в выходной. Чем быстрее, тем лучше. Размер заранее неизвестен.
На странице http://mattmahoney.net/dc/text.html#5277 нашёл следующие программы:
#define NDEBUG 1 // turn off debugging checks
#include <snappy.h>
#include <stdio.h>
int main() {
std::string input, output;
int c;
while ((c=getchar())!=EOF) input+=char(c); // read from stdin
snappy::Compress(input.c_str(), input.size(), &output); // MODE = Compress or Uncompress
fwrite(output.c_str(), 1, output.size(), stdout); // write to stdout
return 0;
}
/*--------------------------------------------------------------*/
#define NDEBUG 1 // turn off debugging checks
#include <snappy.h>
#include <stdio.h>
int main() {
std::string input, output;
int c;
while ((c=getchar())!=EOF) input+=char(c); // read from stdin
snappy::Uncompress(input.c_str(), input.size(), &output); // MODE = Compress or Uncompress
fwrite(output.c_str(), 1, output.size(), stdout); // write to stdout
return 0;
}
Вопрос: не слишком ли медленно получается читать поток по 1 символу? Нельзя ли это сделать как-то быстрее?