Forráskód Böngészése

printf decimal integer formatting: shave off one division

once the remaining value is less than 10, the modulo operation to
produce the final digit and division to prepare for next loop
iteration can be dropped. this may be a meaningful performance
distinction when formatting low-magnitude numbers in bulk, and should
never hurt.

based on patch by Viktor Reznov.
Rich Felker 9 hónapja
szülő
commit
3f9d4224d8
1 módosított fájl, 2 hozzáadás és 1 törlés
  1. 2 1
      src/stdio/vfprintf.c

+ 2 - 1
src/stdio/vfprintf.c

@@ -166,7 +166,8 @@ static char *fmt_u(uintmax_t x, char *s)
 {
 	unsigned long y;
 	for (   ; x>ULONG_MAX; x/=10) *--s = '0' + x%10;
-	for (y=x;           y; y/=10) *--s = '0' + y%10;
+	for (y=x;       y>=10; y/=10) *--s = '0' + y%10;
+	if (y) *--s = '0' + y;
 	return s;
 }