------- 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