On a simple benchmark of:
(let ([N 100000]
[M 20]
[q (make-queue)])
(time (for ([i (in-range M)])
(for ([i (in-range (* i N))]) (enqueue! q i))
(unless (for/and ([i (in-range (* i N))]) (list i (dequeue! q)))
(error "poof")))))
I get these timings:
original version: cpu time: 24438 real time: 24439 gc time: 8164
single-links: cpu time: 17848 real time: 17849 gc time: 4859
this version: cpu time: 6519 real time: 6519 gc time: 3032
In addition, cleaned up the documentation a little, and mention the fact
that it is not thread safe.