Last change
on this file since 31138 was
31138,
checked in by felix winkelmann, 6 years ago
|
added preliminary eggs for extraction from core libraries
|
File size:
1.0 KB
|
Line | |
---|
1 | (use binary-search) |
---|
2 | |
---|
3 | ;; fill and search vector |
---|
4 | |
---|
5 | (define count 10000000) |
---|
6 | |
---|
7 | (print "fill vector") |
---|
8 | |
---|
9 | (define seq (make-vector count)) |
---|
10 | |
---|
11 | (do ((i 0 (add1 i))) |
---|
12 | ((>= i count)) |
---|
13 | (vector-set! seq i i)) |
---|
14 | |
---|
15 | (define ((compare x) y) (- x y)) |
---|
16 | |
---|
17 | (print "search vector") |
---|
18 | |
---|
19 | (time |
---|
20 | (do ((i 0 (add1 i))) |
---|
21 | ((>= i 10000)) |
---|
22 | (let ((j (random count))) |
---|
23 | (assert (= j (binary-search seq (compare j))))))) |
---|
24 | |
---|
25 | (print "failing search of vector") |
---|
26 | (assert (not (binary-search seq (compare -3)))) |
---|
27 | |
---|
28 | ;; same for list |
---|
29 | |
---|
30 | (print "search list") |
---|
31 | |
---|
32 | (let ((lst (vector->list seq))) |
---|
33 | (time |
---|
34 | (do ((i 0 (add1 i))) |
---|
35 | ((>= i 10)) |
---|
36 | (let ((j (random count))) |
---|
37 | (assert (= j (binary-search lst (compare j))))))) |
---|
38 | (print "failing search of list") |
---|
39 | (assert (not (binary-search lst (compare -3))))) |
---|
40 | |
---|
41 | ;; abstract sequence |
---|
42 | |
---|
43 | (define (square x) (* x x)) |
---|
44 | |
---|
45 | (print "search abstract sequence") |
---|
46 | (time |
---|
47 | (do ((i 0 (add1 i))) |
---|
48 | ((>= i 10000)) |
---|
49 | (let* ((j (random count)) |
---|
50 | (k (square j))) |
---|
51 | (assert (= j (binary-search |
---|
52 | count |
---|
53 | (lambda (x) (- k (square x))))))))) |
---|
Note: See
TracBrowser
for help on using the repository browser.