Boost logo

Boost Users :

Subject: [Boost-users] Fastest way of serializing a huge vector of ints into a human readable string
From: Roland Bock (rbock_at_[hidden])
Date: 2009-02-27 12:46:07


Hi,

I have a program which produces a vector of integers (several million
entries). I need to write that into a human-readable string of space
separated numbers.

I wonder, what would be the fastest way?

My first attempt was

stringstream resultStream;
copy(integers.begin(), integers.end(),
ostream_iterator<int>(resultStream, " "));
string result = resultStream.str();

But that requires copying the string.

Thus I was wondering if I could use boost to write to the target string
directly?

boost::iostreams allow me to do the following:

string result;
boost::iostreams::filtering_ostream
out(boost::iostreams::back_inserter(result));
copy(integers.begin(), integers.end(), ostream_iterator<uint64>(out, " "));

This is faster by almost a factor of 2.

Any ideas how to increase speed even more?

Thanks in advance,

Roland


Boost-users list run by williamkempf at hotmail.com, kalb at libertysoft.com, bjorn.karlsson at readsoft.com, gregod at cs.rpi.edu, wekempf at cox.net