| Commit message (Collapse) | Author |
|
|
|
|
|
|
|
|
|
Barely used, and almost always was better server by a propper error
call.
|
|
|
|
While not necessary, since we barely use UUID:s, it's still WAY faster,
and nice to not depend on the system providing `uuidgen'.
For comparison, number of UUID:s generated by different settups in 1
second:
65.000 :: guile native
700 :: guile shell-out
3.500.000 :: c native
100.000 :: libuuid - guile bindings
650.000 :: libuuid
Tests where run with either
(call-with-time-limit
1
(lambda ()
(let loop ()
(uuid)
(set! count (1+ count))
(loop)))
(lambda _ (display count)))
or
volatile unsigned long long count = 0;
sigaction(SIGALARM, ...);
alarm(1);
for (;;) {
uuid();
count++;
}
(let ((count 0))
(call-with-time-limit
1
(lambda ()
(let loop ()
((@ (hnh util) uuidgen))
(set! count (1+ count))
(loop)))
(lambda _ (format #t "exec count = ~:d~%" count))))
|
|
|
|
|
|
|
|
While the algorithm was general, the packing of colors, along with the
error handling made it to non-portable.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
This is the first (major) step in splitting the generally useful items
into its own library.
|