diff options
author | Jim Meyering <meyering@redhat.com> | 2012-09-18 08:26:17 +0200 |
---|---|---|
committer | Jim Meyering <meyering@redhat.com> | 2012-10-04 22:09:00 +0200 |
commit | 06b7ed8051d07677572e074d3d45007f1282ed56 (patch) | |
tree | 95b309bfc6cb3ce60867f162d003300131de3522 | |
parent | 759ebcb57db73449b5670204f85931d34881b7d2 (diff) | |
download | coreutils-06b7ed8051d07677572e074d3d45007f1282ed56.tar.xz |
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.c | 6 |
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]) { |