# HG changeset patch # User jlarmour # Date 1166823420 0 # Node ID 253ee03b245561eb528f871ae1ea6b271da85bec # Parent a47155ebc83f410d3871274f384ad6d89e86835d * src/output/vfnprintf.cxx (vfnprintf): Speed-up formatting of decimal integers by replacing modulo operation with multiply and subtract. diff --git a/packages/language/c/libc/stdio/current/ChangeLog b/packages/language/c/libc/stdio/current/ChangeLog --- a/packages/language/c/libc/stdio/current/ChangeLog +++ b/packages/language/c/libc/stdio/current/ChangeLog @@ -1,3 +1,9 @@ +2006-12-22 Sergei Organov + + * src/output/vfnprintf.cxx (vfnprintf): Speed-up formatting of + decimal integers by replacing modulo operation with multiply and + subtract. + 2006-09-27 Jonathan Larmour * include/stdio.h: Make fpos_t be signed to allow negative diff --git a/packages/language/c/libc/stdio/current/src/output/vfnprintf.cxx b/packages/language/c/libc/stdio/current/src/output/vfnprintf.cxx --- a/packages/language/c/libc/stdio/current/src/output/vfnprintf.cxx +++ b/packages/language/c/libc/stdio/current/src/output/vfnprintf.cxx @@ -555,8 +555,9 @@ number: if ((dprec = pre case DEC: /* many numbers are 1 digit */ while (_uquad >= 10) { - *--cp = to_char(_uquad % 10); - _uquad /= 10; + u_quad_t next = _uquad / 10; + *--cp = to_char(_uquad - (next * 10)); + _uquad = next; } *--cp = to_char(_uquad); break;