This is the mail archive of the libstdc++@gcc.gnu.org mailing list for the libstdc++ project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: Mainline mt_allocator performance on sparc-sun-solaris2.8


Just a quick reply to this.

Here are my results from your test program, with various configs of the
mainline mt_allocator.h. 
                                                                                
std::allocator == new_allocator
                        Number of slots
Size             1       8      64    1024    8192 1048576
---------- ------- ------- ------- ------- ------- -------
   8 bytes  1.4226  1.0012 0.98987   0.975 0.97926 0.96566
 128 bytes 0.91381   1.006 0.99863 0.99573   1.013  1.0146
1024 bytes 0.99121 0.96848 0.99884   1.005   1.007  1.0021
 
 
std::allocator == __mt_alloc<true, __common_pool_policy<true> >
                        Number of slots
Size             1       8      64    1024    8192 1048576
---------- ------- ------- ------- ------- ------- -------
   8 bytes   1.961 0.87375 0.87284 0.83523 0.79061 0.79817
 128 bytes  1.1493  1.0472  1.0351  1.0143   1.105  1.1065
1024 bytes 0.79606 0.93996 0.95405 0.93934 0.94546 0.98916
 
 
std::allocator == __mt_alloc<true, __common_pool_policy<false> >
                        Number of slots
Size             1       8      64    1024    8192 1048576
---------- ------- ------- ------- ------- ------- -------
   8 bytes  6.6288  1.2739  1.2681  1.1886  1.1329  1.0835
 128 bytes  1.6125  1.4102   1.327  1.3641  1.5426   1.431
1024 bytes 0.80295 0.96863 0.93847 0.96163   0.972 0.97285
 
 
std::allocator == __mt_alloc<true, __per_type_pool_policy<_Tp, true> >
                        Number of slots
Size             1       8      64    1024    8192 1048576
---------- ------- ------- ------- ------- ------- -------
   8 bytes  1.3585 0.86375 0.99131 0.93866 0.85003  0.8162
 128 bytes  1.4086   1.237  1.1254  1.0701   1.102  1.1668
1024 bytes 0.92151  1.0126 0.95911 0.97437 0.95551 0.98735
 
 
std::allocator == __mt_alloc<true, __per_type_pool_policy<_Tp, false> >
                        Number of slots
Size             1       8      64    1024    8192 1048576
---------- ------- ------- ------- ------- ------- -------
   8 bytes  2.6789  1.2694  1.2444  1.1768  1.0956  1.3237
 128 bytes  2.5506  3.1284  1.5222  1.3942  1.5003  1.4949
1024 bytes 0.91519  1.0053 0.99694 0.99079 0.98643 0.99131

In addition, I have "make check-performance" results for gcc-3_4-branch.
There are three results: baseline 3.4.2, and with a backport of
mt_alloch to the branch, with common and per_thread pool types as marked.

>  __gnu_cxx::__pool<(bool)1>::_M_reclaim_memory(char*, unsigned)
>  __gnu_cxx::__mt_alloc<char, __gnu_cxx::__common_pool_policy<(bool)1> >::allocate(unsigned, void const*)
>  __gnu_cxx::__pool<(bool)1>::_M_get_thread_id()

I see this too. My initial attemps to make  _M_reclaim_memory more svelt
failed. Perhaps I'll have another go at this.

-benjamin

Attachment: 20040912-libstdc++-performance.sum.bz2
Description: BZip2 compressed data

Attachment: 20040913-libstdc++-performance.mt-per-type.sum.bz2
Description: BZip2 compressed data

Attachment: 20040913-libstdc++-performance.mt.sum.bz2
Description: BZip2 compressed data


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]