summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJim Meyering <meyering@redhat.com>2012-09-18 08:26:17 +0200
committerJim Meyering <meyering@redhat.com>2012-10-04 22:09:00 +0200
commit06b7ed8051d07677572e074d3d45007f1282ed56 (patch)
tree95b309bfc6cb3ce60867f162d003300131de3522
parent759ebcb57db73449b5670204f85931d34881b7d2 (diff)
downloadcoreutils-06b7ed8051d07677572e074d3d45007f1282ed56.tar.gz
coreutils-06b7ed8051d07677572e074d3d45007f1282ed56.tar.bz2
coreutils-06b7ed8051d07677572e074d3d45007f1282ed56.zip
factor: 25% speed-up, on output
* src/factor.c (print_factors_single): Use fputs and umaxtostr rather than printf with "%ju". This reduced the time required to compute and print the factors of the first 10^7 integers from over 8 seconds to 5.75s. Run this command: seq $((10**7)) | env time factor > /dev/null
-rw-r--r--src/factor.c6
1 files changed, 5 insertions, 1 deletions
diff --git a/src/factor.c b/src/factor.c
index 84d9721c4..1ca581227 100644
--- a/src/factor.c
+++ b/src/factor.c
@@ -2272,7 +2272,11 @@ print_factors_single (uintmax_t t1, uintmax_t t0)
for (unsigned int j = 0; j < factors.nfactors; j++)
for (unsigned int k = 0; k < factors.e[j]; k++)
- printf (" %ju", factors.p[j]);
+ {
+ char buf[INT_BUFSIZE_BOUND (uintmax_t)];
+ putchar (' ');
+ fputs (umaxtostr (factors.p[j], buf), stdout);
+ }
if (factors.plarge[1])
{