std::string::append() slow -------------------------- Key: STDCXX-493 URL: https://issues.apache.org/jira/browse/STDCXX-493 Project: C++ Standard Library Issue Type: Bug Components: 21. Strings Affects Versions: 4.1.3 Environment: gcc 4.1.2 on Linux/x86_64 Reporter: Mark Brown
This is a similar problem to STDCXX-492: all overloads of string::append() are slower than the same overloads in gcc: $ let n=0; while [ $n -lt 3 ]; do time LD_LIBRARY_PATH=../lib ./append-stdcxx-4.1.3 500000000 $n; let n=`expr $n + 1`; done real 0m11.221s user 0m9.941s sys 0m1.104s real 0m13.065s user 0m11.661s sys 0m1.236s real 0m7.837s user 0m6.660s sys 0m1.160s $ let n=0; while [ $n -lt 3 ]; do time ./append-gcc-4.1.2 500000000 $n; let n=`expr $n + 1`; done real 0m4.865s user 0m4.172s sys 0m0.692s real 0m7.617s user 0m6.920s sys 0m0.696s real 0m5.787s user 0m5.068s sys 0m0.720s The program I used to do the comaprison is below: #include <cassert> #include <cstdlib> #include <string> int main (int argc, char *argv[]) { const int N = argc < 2 ? 1 : std::atoi (argv [1]); const int op = argc < 3 ? 0 : std::atoi (argv [2]); std::string str; const std::string x ("X"); if (op == 0) { for (int i = 0; i < N; ++i) str.append (1, 'x'); } else if (op == 1) { for (int i = 0; i < N; ++i) str.append ("x"); } else { for (int i = 0; i < N; ++i) str.append (x); } assert (str.size () == std::size_t (N)); } -- This message is automatically generated by JIRA. - You can reply to this email to add a comment to the issue online.