On 07/05/2026 04:47, Collin Funk wrote:
On an AMD Ryzen 7 3700X running GNU/Linux:

     $ timeout 30 taskset 1 ./src/shuf-prev \
         -r -i 1000000-1000000 | pv -r > /dev/null
     [ 302MiB/s]
     $ timeout 30 taskset 1 ./src/shuf \
         -r -i 1000000-1000000 | pv -r > /dev/null
     [ 434MiB/s]


+static bool
+print_number (unsigned long int number, char eolbyte)
+{
+  char buf[INT_BUFSIZE_BOUND (uintmax_t)];
+  char const *p = umaxtostr (number, buf);
+  buf[sizeof buf - 1] = eolbyte;
+  idx_t len = buf + sizeof buf - p;
+  return fwrite (p, 1, len, stdout) == len;
+}
That's abit of a layering violation, as it assumes
umaxtostr() will always write to the end of the buffer.
This might be a place to open code umaxtostr() like was done in:
https://github.com/coreutils/coreutils/commit/0619c4a49

cheers,
Padraig

Reply via email to