You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@stdcxx.apache.org by "Travis Vitek (JIRA)" <ji...@apache.org> on 2007/09/13 10:56:32 UTC
[jira] Assigned: (STDCXX-492) std::string::operator+=() slow
[ https://issues.apache.org/jira/browse/STDCXX-492?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Travis Vitek reassigned STDCXX-492:
-----------------------------------
Assignee: Travis Vitek
> std::string::operator+=() slow
> ------------------------------
>
> Key: STDCXX-492
> URL: https://issues.apache.org/jira/browse/STDCXX-492
> 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
>
>
> Comparing overloads of string::operator+=() in stdcxx with the same functions in gcc 4.1.2, stdcxx is up to twice slower than gcc:
> $ time ./op_plus_equal-stdcxx 100000000 0
> real 0m2.241s
> user 0m1.932s
> sys 0m0.204s
> $ time ./op_plus_equal-stdcxx 100000000 1
> real 0m2.540s
> user 0m2.344s
> sys 0m0.196s
> $ time ./op_plus_equal-stdcxx 100000000 2
> real 0m1.492s
> user 0m1.308s
> sys 0m0.184s
> $ time ./op_plus_equal-gcc 100000000 0
> real 0m0.883s
> user 0m0.728s
> sys 0m0.156s
> $ time ./op_plus_equal-gcc 100000000 1
> real 0m1.589s
> user 0m1.424s
> sys 0m0.168s
> $ time ./op_plus_equal-gcc 100000000 2
> real 0m1.131s
> user 0m0.976s
> sys 0m0.156s
> #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 += 'x';
> } else if (op == 1) {
> for (int i = 0; i < N; ++i)
> str += "x";
> } else {
> for (int i = 0; i < N; ++i)
> str += 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.