Bill Lear
I have been searching the world in vain for a stringstream that works with a static buffer, and does not use the heap for memory allocation. We have an application that uses lots (12-16Gb) of memory. This puts a strain on the memory allocation routines, and when we want to create a small string we find that stringstream is very, very expensive, and sprintf into a static buffer much, much faster.
Does boost provide anything like this?
This actually came up when we realized that boost lexical_cast was using stringstream. When we replaced it with sprintf, our runtimes (when memory usage was very high) went down significantly. I should also point out that ANYTHING we did with dynamic memory at that point in the application (vector::push_back, for example) was hideously slow.
I'd like to have the best of both worlds: the relatively clear syntax of the ostringstream inserters, working on a static buffer.
Any help (code samples especially) appreciated.
Bill
I wrote some while ago a wrapper which writes to a static buffer and flushes then to the debugger output window. One can easily write things like: dbg_cout << 2 << "Hello" << std::endl It originates from the book 'Standard C++ IOStreams and Locales' 3.4.1.1.2 and is basically an adapter of a 'basic_streambuf'. The iostream library is not easy to plug in, and I think that Boost Iostreams helps in this area. Unfortunately I haven't worked with it yet. If you are interested I can mail you the code, but since it is not a Boost topic I better not show it here... wkr, me