34 lines
764 B
Racket
34 lines
764 B
Racket
#lang racket
|
|
|
|
(require prospect/route prospect/tset)
|
|
|
|
(define N-PATTERNS 10000)
|
|
(define N-MESSAGES 1000000)
|
|
|
|
(define (pat n) (pattern->trie (datum-tset n) (list n ?)))
|
|
|
|
(define pats
|
|
(time
|
|
(for/fold [(p (trie-empty))]
|
|
[(n (in-range N-PATTERNS))]
|
|
(trie-union p (pat n)))))
|
|
|
|
;; (display (trie->dot pats))
|
|
|
|
(collect-garbage)
|
|
(collect-garbage)
|
|
(collect-garbage)
|
|
|
|
(define-values (_result cpu-time delta-ms gc-time)
|
|
(time-apply
|
|
(lambda ()
|
|
(for [(j (in-range N-MESSAGES))]
|
|
(define i (random N-PATTERNS))
|
|
(trie-lookup pats (list i i) #f)))
|
|
'()))
|
|
|
|
(printf "Delta ~a ms; that is, ~a microsec per routed message, ~a Hz\n"
|
|
delta-ms
|
|
(/ (* 1000.0 delta-ms) N-MESSAGES)
|
|
(/ N-MESSAGES (/ delta-ms 1000.0)))
|