Vectors and sealed non-generative records are still still slower than cons even at both the default and third optimize-level.
** Summary
(cons X (cons Y Z)) : 0.562500000s
vector: 0.671875000s
sealed-nongen-record:
0.750000000s
record:
0.765625000s
The CPU is an Intel Core i9 - 9880H
Chez 9.5.3 with threaded runtime / windows
The benchmark code branches through a binary tree indexed by the bits of a fixnum key and node labels (critbit patricia)
(tree has 30,000 random elements)
----
** cons, cons?, cadr, cddr, car
optimize-level 3:
no collections
0.562500000s elapsed cpu time
0.582575600s elapsed real time
0 bytes allocated
----
** make-vector 3, vector-ref
default optimization level:
no collections
0.671875000s elapsed cpu time
0.678558100s elapsed real time
0 bytes allocated
optimize-level 3:
no collections
0.671875000s elapsed cpu time
0.652121100s elapsed real time
0 bytes allocated
----
**
(define-record tree (label left right))default optimization level:
no collections
0.812500000s elapsed cpu time
0.821295400s elapsed real time
0 bytes allocated
optimize-level
3:
no collections
0.765625000s elapsed cpu time
0.773954600s elapsed real time
0 bytes allocated
---
**:
(define-record-type tree (fields label left right) (nongenerative) (sealed #t))
optimize-level
3:
no collections
0.750000000s elapsed cpu time
0.753506700s elapsed real time
0 bytes allocated