aboutsummaryrefslogtreecommitdiff
path: root/module/vcomponent
diff options
context:
space:
mode:
authorHugo Hörnquist <hugo@lysator.liu.se>2022-03-08 03:43:03 +0100
committerHugo Hörnquist <hugo@lysator.liu.se>2022-03-15 01:43:12 +0100
commit02aba668c408a473067bc26b8f36077384b9c14a (patch)
treedfd8b1de9002a97bd3410d3ab3389100b8e2ff4a /module/vcomponent
parentPopup created events now don't take seconds. (diff)
downloadcalp-02aba668c408a473067bc26b8f36077384b9c14a.tar.gz
calp-02aba668c408a473067bc26b8f36077384b9c14a.tar.xz
Add native UUID generator.
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))))
Diffstat (limited to 'module/vcomponent')
-rw-r--r--module/vcomponent/formats/vdir/save-delete.scm3
-rw-r--r--module/vcomponent/util/instance/methods.scm3
2 files changed, 4 insertions, 2 deletions
diff --git a/module/vcomponent/formats/vdir/save-delete.scm b/module/vcomponent/formats/vdir/save-delete.scm
index 6068e34c..7de9379b 100644
--- a/module/vcomponent/formats/vdir/save-delete.scm
+++ b/module/vcomponent/formats/vdir/save-delete.scm
@@ -11,6 +11,7 @@
(define-module (vcomponent formats vdir save-delete)
:use-module (hnh util)
+ :use-module (hnh util uuid)
:use-module ((hnh util path) :select (path-append))
:use-module ((hnh util exceptions) :select (assert))
:use-module (vcomponent formats ical output)
@@ -24,7 +25,7 @@
(assert (eq? 'vdir (prop calendar '-X-HNH-SOURCETYPE)))
- (let* ((uid (or (prop event 'UID) (uuidgen))))
+ (let* ((uid (or (prop event 'UID) (uuid))))
(set! (prop event 'UID) uid
;; TODO use existing filename if present?
(prop event '-X-HNH-FILENAME) (path-append
diff --git a/module/vcomponent/util/instance/methods.scm b/module/vcomponent/util/instance/methods.scm
index 120ab2fe..926f9bb8 100644
--- a/module/vcomponent/util/instance/methods.scm
+++ b/module/vcomponent/util/instance/methods.scm
@@ -1,5 +1,6 @@
(define-module (vcomponent util instance methods)
:use-module (hnh util)
+ :use-module (hnh util uuid)
:use-module (srfi srfi-1)
:use-module (srfi srfi-41)
:use-module (srfi srfi-41 util)
@@ -93,7 +94,7 @@
(add-child! calendar event)
(unless (prop event 'UID)
- (set! (prop event 'UID) (uuidgen)))
+ (set! (prop event 'UID) (uuid)))