Assign: new benchmarks

Paolo Carlini pcarlini@unitus.it
Sat Dec 15 07:33:00 GMT 2001


Hi,

this are the benchmarks for the current (take3) patch for assign(__srt, __pos,
__n) and for assign(__s, __n). As usual, PII-400, linux2.4.16, glibc2.2.4.

Pretty good :-)

Cheers,
Paolo.

//////////////////////////////////////////////////////

assign(__srt, __pos, __n)
-------------------------
-------------------------

"self"
------
mainline + take3 patch
----------------------
5.020u 0.010s 0:05.11 98.4%     0+0k 0+0io 203pf+0w

2.95.3
------
7.430u 0.000s 0:07.54 98.5%     0+0k 0+0io 93pf+0w

mainline
--------
12.540u 0.010s 0:12.78 98.2%    0+0k 0+0io 201pf+0w


"shared"
--------
mainline + take3 patch
----------------------
7.480u 0.010s 0:07.59 98.6%     0+0k 0+0io 202pf+0w

2.95.3
------
8.540u 0.000s 0:08.68 98.3%     0+0k 0+0io 93pf+0w

mainline
--------
13.700u 0.040s 0:13.92 98.7%    0+0k 0+0io 201pf+0w


"unshared"
----------
mainline + take3 patch
----------------------
6.400u 0.030s 0:06.51 98.7%     0+0k 0+0io 203pf+0w

2.95.3
------
7.930u 0.000s 0:08.06 98.3%     0+0k 0+0io 93pf+0w

mainline
--------
12.690u 0.010s 0:12.95 98.0%    0+0k 0+0io 201pf+0w


assign(__s, __n)
----------------
----------------

#include <string>
int main()
{
  std::string one;

  for (int i = 0; i < 2000000; ++i)
    {
      one = "12345678901234567890123456789012345678901234567890"
        "12345678901234567890123456789012345678901234567890";
      one.assign(one.c_str()+19, 80);
      one.assign(one.c_str()+9, 60);
      one.assign(one.c_str()+39, 10);
      one.assign(one.c_str(), 10);
    }
}

mainline + patch
----------------
5.120u 0.010s 0:05.20 98.6%     0+0k 0+0io 203pf+0w

2.95.3
------
7.510u 0.010s 0:07.64 98.4%     0+0k 0+0io 93pf+0w

mainline
--------
12.960u 0.010s 0:13.16 98.5%    0+0k 0+0io 201pf+0w

/////////

#include <string>
int main()
{
  std::string one, two;

  const char * source= "12345678901234567890123456789012345678901234567890"
    "12345678901234567890123456789012345678901234567890";

  for (int i = 0; i < 2000000; ++i)
    {
      two = one;
      one.assign(source+19, 80);
      one.assign(source+9, 60);
      one.assign(source+39, 10);
      one.assign(source, 10);
    }
}

mainline + patch
----------------
4.790u 0.030s 0:04.87 98.9%     0+0k 0+0io 202pf+0w

2.95.3
------
5.910u 0.020s 0:06.02 98.5%     0+0k 0+0io 93pf+0w

mainline
--------
9.460u 0.020s 0:09.61 98.6%     0+0k 0+0io 200pf+0w

///////////

#include <string>
int main()
{
  std::string one;

  for (int i = 0; i < 2000000; ++i)
    {
      const char* source = "12345678901234567890123456789012345678901234567890"
        "12345678901234567890123456789012345678901234567890";
      one.assign(source+19, 80);
      one.assign(source+9, 60);
      one.assign(source+39, 10);
      one.assign(source, 10);
    }
}

mainline + patch
----------------
3.810u 0.010s 0:03.87 98.7%     0+0k 0+0io 203pf+0w

2.95.3
------
5.740u 0.000s 0:05.85 98.1%     0+0k 0+0io 93pf+0w

mainline
--------
8.540u 0.010s 0:08.66 98.7%     0+0k 0+0io 201pf+0w




More information about the Libstdc++ mailing list