newlisp/qa-specific-tests/qa-dictionary

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))