Denys Vlasenko wrote: > On Monday 08 October 2007 16:08, Heikki Linnakangas wrote: >> Denys Vlasenko wrote: >>> In linux kernel, decimal conversion in vsprintf() is optimized >>> with custom conversion code. x3 faster, and no, it's not written in >>> assembly. >> Interesting. I copy-pasted the code from 2.6.20.4 source tree into a >> test program, but it looks like there's no measurable difference in >> performance of sprintf(dst, "%d-%d-%d",a,b,c) between glibc and linux >> sprintf. Where did that 3x faster come from? > > It's not in 2.6.20, not even 2.6.22. > > You need some of the recent -rc. linux-2.6.23-rc9 definitely has it. > See attached.
Thanks. I looked at the test case I ran earlier, and noticed that it was in fact bogus; both test runs used the glibc version... I fixed that, added a test case using the new linux code, and put up the results here: http://users.tkk.fi/hlinnaka/gcc/ The new linux code is slightly but not much faster than the old one (3.04s vs 3.16s), but it does beat glibc (5.20s) by a wide margin. However, preparsing the format string in gcc still beats the linux version hands down (0.82s). -- Heikki Linnakangas EnterpriseDB http://www.enterprisedb.com