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