[ https://issues.apache.org/jira/browse/STDCXX-493?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Martin Sebor resolved STDCXX-493. --------------------------------- Resolution: Fixed Resolved by the committed patch. The before and after timings posted below indicate the patch makes the append(const_pointer) overload up to seven times faster than in 4.1.3. http://www.mail-archive.com/stdcxx-dev@incubator.apache.org/msg03995.html > 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 > Assignee: Travis Vitek > Fix For: 4.2 > > Attachments: stdcxx-493.patch > > > 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.