summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPeter Bex <peter@more-magic.net>2025-08-15 13:34:27 +0200
committerPeter Bex <peter@more-magic.net>2025-08-18 13:39:32 +0200
commita64d4e18ade6e0eca23806524f863852594f229d (patch)
treec75367aa0365d87fca1dbfe34657e0b3b9dc3d66
parent7fd4fc4bc759564db7714748646d5dc74f9e7a11 (diff)
downloadslset-a64d4e18ade6e0eca23806524f863852594f229d.tar.gz
Minor change in benchmark
Do not count list construction towards benchmark time. This doesn't appear to make a big difference but it's good to pull that out of the calculation.
-rw-r--r--benchmarks/benchmark.scm93
1 files changed, 46 insertions, 47 deletions
diff --git a/benchmarks/benchmark.scm b/benchmarks/benchmark.scm
index fd5f7e7..927fe15 100644
--- a/benchmarks/benchmark.scm
+++ b/benchmarks/benchmark.scm
@@ -157,55 +157,54 @@
(print "# Benchmark run for " impl)
(print "# set size\trun time(ms)")
-(let lp1 ((size (or requested-size 10))
- (start-time (current-process-milliseconds)))
+(let lp1 ((size (or requested-size 10)))
(define lst1 (list-tabulate size (lambda (i) (string->symbol (conc "x" i)))))
(define lst2 (list-tabulate size (lambda (i) (string->symbol (conc "y" i)))))
- (let lp2 ((i 10000))
- (case impl
- ((lset)
- (lset-difference eq? lst1 lst2))
- ((slset)
- (slset-difference lst1 lst2))
- ((symbolset cached-symbolset)
- (when (eq? impl 'cached-symbolset)
- (set! symbol-cache? #t))
- (symbolset-difference lst1 lst2))
- ((hash-table cached-hash-table)
- (when (pair? lst1)
- (when (eq? impl 'cached-hash-table)
+ (let ((start-time (current-process-milliseconds)))
+ (let lp2 ((i 10000))
+ (case impl
+ ((lset)
+ (lset-difference eq? lst1 lst2))
+ ((slset)
+ (slset-difference lst1 lst2))
+ ((symbolset cached-symbolset)
+ (when (eq? impl 'cached-symbolset)
(set! symbol-cache? #t))
- (let ((ht1 (make-my-hash-table size))
- (ht2 (make-my-hash-table size)))
- (begin
- (for-each (lambda (x) (my-hash-table-set! ht1 x #t)) lst1)
- (for-each (lambda (x) (my-hash-table-set! ht2 x #t)) lst2)
+ (symbolset-difference lst1 lst2))
+ ((hash-table cached-hash-table)
+ (when (pair? lst1)
+ (when (eq? impl 'cached-hash-table)
+ (set! symbol-cache? #t))
+ (let ((ht1 (make-my-hash-table size))
+ (ht2 (make-my-hash-table size)))
+ (begin
+ (for-each (lambda (x) (my-hash-table-set! ht1 x #t)) lst1)
+ (for-each (lambda (x) (my-hash-table-set! ht2 x #t)) lst2)
+ (set! lst1 ht1)
+ (set! lst2 ht2))))
+ (my-hash-table-difference lst1 lst2))
+ ((srfi-69 cached-srfi-69)
+ (when (pair? lst1)
+ (when (eq? impl 'cached-srfi-69)
+ (set! symbol-cache? #t))
+ (let ((ht1 (make-hash-table eq? (if (eq? impl 'cached-srfi-69) hash-symbol symbol-hash) size))
+ (ht2 (make-hash-table eq? (if (eq? impl 'cached-srfi-69) hash-symbol symbol-hash) size)))
+ (for-each (lambda (x) (hash-table-set! ht1 x #t)) lst1)
+ (for-each (lambda (x) (hash-table-set! ht2 x #t)) lst2)
(set! lst1 ht1)
- (set! lst2 ht2))))
- (my-hash-table-difference lst1 lst2))
- ((srfi-69 cached-srfi-69)
- (when (pair? lst1)
- (when (eq? impl 'cached-srfi-69)
- (set! symbol-cache? #t))
- (let ((ht1 (make-hash-table eq? (if (eq? impl 'cached-srfi-69) hash-symbol symbol-hash) size))
- (ht2 (make-hash-table eq? (if (eq? impl 'cached-srfi-69) hash-symbol symbol-hash) size)))
- (for-each (lambda (x) (hash-table-set! ht1 x #t)) lst1)
- (for-each (lambda (x) (hash-table-set! ht2 x #t)) lst2)
- (set! lst1 ht1)
- (set! lst2 ht2)))
- (srfi-69-hash-table-difference lst1 lst2))
- (else (error "Unknown impl" impl)))
- (unless (zero? i)
- (lp2 (sub1 i))))
-
- (let* ((end-time (current-process-milliseconds))
- (total-ms (- end-time start-time)))
- (print size "\t" total-ms)
- (flush-output)
- ;; Run up to 10s, or a set size of 3000, whichever comes first
- (unless (or requested-size
- (> total-ms 10000)
- (> size 3000))
- (lp1 (+ size 100)
- (current-process-milliseconds)))))
+ (set! lst2 ht2)))
+ (srfi-69-hash-table-difference lst1 lst2))
+ (else (error "Unknown impl" impl)))
+ (unless (zero? i)
+ (lp2 (sub1 i))))
+
+ (let* ((end-time (current-process-milliseconds))
+ (total-ms (- end-time start-time)))
+ (print size "\t" total-ms)
+ (flush-output)
+ ;; Run up to 10s, or a set size of 3000, whichever comes first
+ (unless (or requested-size
+ (> total-ms 10000)
+ (> size 3000))
+ (lp1 (+ size 100))))))