On Thu, 10 Feb 2005 18:47:11 -0800, t. scott urban
On Thu, 2005-02-10 at 18:48 +0100, Chateauneu Remi wrote:
I'm working on an application with many std::string concatenations, everywhere. This is consuming a lot of CPU resources, due to temporary strings, memory allocation, etc... Due to the size of the existing code, it is not possible to make big changes.
I tried first to transform these kind of expressions: std::string a = b + c + d + e ;
... into ...
std::string a(b); a += c ; a += d ; a += e ;
It's a little ugly, but you can do
std::string a; a.reserve (b.size () + c.size () + d.size ()); a += b += c += d;
That's about as fast as you can do. If stl library authors used expression templates you do this just as fast with a = b + c + d + e; See round about here http://lists.boost.org/MailArchives/boost/msg55339.php and http://lists.boost.org/MailArchives/boost/msg55341.php and an alternative though which may be better http://lists.boost.org/MailArchives/boost/msg55413.php Doesn't help you now though, sorry. Matt. matthurd@acm.org