78 lines
2.4 KiB
Text
Executable file
78 lines
2.4 KiB
Text
Executable file
#!/usr/bin/newlisp
|
|
|
|
; qa-dictionary
|
|
; check dictionary creation
|
|
|
|
;(macro (double X) (+ x x))
|
|
;(macro (triple X) (+ x x x))
|
|
;(macro (bar X) (+ x x x))
|
|
|
|
|
|
(println)
|
|
(println "Testing and benchmarking namespaces")
|
|
|
|
(set 'N 10000)
|
|
|
|
(if (main-args 2)
|
|
(set 'N (int (main-args 2))))
|
|
|
|
; define name-space, force creation, stay in MAIN
|
|
(context 'Lex) (context MAIN)
|
|
|
|
(define (qa-dictionary)
|
|
(set 'data (randomize (sequence 1 N)))
|
|
(set 'ass (map list (map string data) data))
|
|
(println "N of associations: " N)
|
|
(println "number of cells before creating Lex: " (sys-info 0))
|
|
(println "time to aquire from association list: " (set 'ta (time (Lex ass))) " ms")
|
|
(println "time to aquire one entry: "
|
|
(format "%5.3f" (mul 1000 (div ta N))) (append " " (char 956) "s"))
|
|
|
|
(print "time reading and verifying entries ... : ")
|
|
(set 'start (time-of-day))
|
|
(set 'sum 0)
|
|
(dolist (a ass)
|
|
(if (!= (Lex (a 0)) (a 1))
|
|
(begin
|
|
(println "Error: " (Lex (a 0)) " != " (a 1))
|
|
(set 'read-error true))))
|
|
(set 'ta (- (time-of-day) start))
|
|
(println ta " ms")
|
|
(println "time to read and verify one entry: "
|
|
(format "%5.3f" (mul 1000 (div ta N))) (append " " (char 956) "s"))
|
|
|
|
(set 'start (time-of-day))
|
|
(set 'sum 0)
|
|
(dolist (a ass)
|
|
(Lex (a 0)) )
|
|
(set 'ta (- (time-of-day) start))
|
|
(println "time to only read one entry: "
|
|
(format "%5.3f" (mul 1000 (div ta N))) (append " " (char 956) "s"))
|
|
|
|
(println "number of cells after creating Lex: " (sys-info 0))
|
|
(println "N of symbols in Lex: " (set 'ns (length (Lex))))
|
|
(println "time to save to file: " (time (save "Lex.lsp" 'Lex)) " ms")
|
|
(println "time to delete namespace: " (set 'td (time (delete 'Lex))) " ms")
|
|
(println "time to delete one symbol: "
|
|
(format "%5.3f" (mul 1000 (div td ns))) (append " " (char 956) "s"))
|
|
(println "number of cells after deleting Lex: " (sys-info 0))
|
|
(println "time to load namespace: " (time (load "Lex.lsp")) " ms")
|
|
(println "number of cells after loading Lex: " (sys-info 0))
|
|
(println "time to save Lex2: " (time (save "Lex2.lsp" 'Lex)) " ms")
|
|
(println)
|
|
(if (and (not read-error) (= (read-file "Lex.lsp") (read-file "Lex2.lsp")))
|
|
(println ">>>>> Dictionary API tested SUCCESSFUL")
|
|
(println ">>>>> PROBLEM in dictionary API"))
|
|
)
|
|
|
|
(qa-dictionary)
|
|
(delete-file "Lex.lsp")
|
|
(delete-file "Lex2.lsp")
|
|
(delete 'Lex)
|
|
(set 'data nil)
|
|
(set 'ass nil)
|
|
(if (main-args 2)
|
|
(println (sys-info))
|
|
(exit))
|
|
|
|
|