Commit Graph

4 Commits

Author SHA1 Message Date
Eli Barzilay
3f36d054f6 Turn contracts on enqueue!' and dequeue!' into the usual error checks.
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.
2010-06-23 16:13:54 -04:00
Eli Barzilay
d986fed725 Uses a simpler single-linked list, about half of the meat code, and much
faster due to the removed overhead of dealing with the redundant
pointers.
2010-06-23 16:13:53 -04:00
Eli Barzilay
8a5bceece1 Various comments on problematic aspects of the code. 2010-06-23 16:13:53 -04:00
Carl Eastlund
70858e93e5 Moved unstable/cce/queue to unstable/queue. 2010-06-06 20:30:40 -04:00