[Bug libstdc++/19642] streaming doubles is very slow compared to sprintf

pcarlini at suse dot de gcc-bugzilla@gcc.gnu.org
Wed Jan 26 15:37:00 GMT 2005


------- Additional Comments From pcarlini at suse dot de  2005-01-26 15:37 -------
For reference, on linux, a typical profile (count = 10000000) begins as
follows, and:
1- The various snprintf are on top.
2- uselocale (the thread safe equivalent of setlocale) is way below
Therefore, we can easily guess that the performance are not so different
from those of snprintf alone.

Each sample counts as 0.01 seconds.
  %   cumulative   self              self     total
 time   seconds   seconds    calls  ms/call  ms/call  name
 28.65      5.71     5.71                             __printf_fp
 13.50      8.40     2.69                             __mpn_divrem
  7.28      9.85     1.45                             memcpy
  6.62     11.17     1.32                             buffered_vfprintf
  5.67     12.30     1.13                             vfprintf
  5.22     13.34     1.04                             __mpn_mul_1
  2.51     13.84     0.50                             mempcpy
  2.31     14.30     0.46                            
std::ostream::operator<<(double)
  2.21     14.74     0.44                             __mpn_rshift
  2.01     15.14     0.40                            
std::ostreambuf_iterator<char, std::char_traits<char> > std::num_put<char,
std::ostreambuf_iterator<char, std::char_traits<char> >
>::_M_insert_float<double>(std::ostreambuf_iterator<char, std::char_traits<char>
>, std::ios_base&, char, char, double) const
  2.01     15.54     0.40                             isinf
  1.81     15.90     0.36                             isnan
  1.46     16.19     0.29                             std::basic_filebuf<char,
std::char_traits<char> >::xsputn(char const*, int)
  1.30     16.45     0.26                             __mpn_extract_double
  1.30     16.71     0.26                             uselocale

-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=19642



More information about the Gcc-bugs mailing list