examples/bench.lisp @ ab7ad2d6f641

Optimize `find-anonymous-variables`

After some profiling I found that this function was taking 4% of the total
runtime just on its own.  The culprit was `tree-collect`, which does some
expensive things (like `(gensym)`).  Because we know exactly what we need we can
write something much faster, and profiling confirms that this function isn't
even on the map any more.
author Steve Losh <steve@stevelosh.com>
date Mon, 11 Jul 2016 21:38:03 +0000
parents ba205f6b2875
children 8897604cb9dd
(ql:quickload 'bones)
(ql:quickload 'paiprolog)

(load "examples/ggp-paip-compiled.lisp")
(load "examples/ggp-paip-interpreted.lisp")
(load "examples/ggp-wam.lisp")

(in-package :bones)

(defun reload ()
  (let ((*standard-output* (make-broadcast-stream))
        (*debug-io* (make-broadcast-stream))
        (*terminal-io* (make-broadcast-stream))
        (*error-output* (make-broadcast-stream)))
    (asdf:load-system 'bones :force t)
    (asdf:load-system 'paiprolog :force t)
    (load "examples/ggp-paip-compiled.lisp")
    (load "examples/ggp-paip-interpreted.lisp")
    (load "examples/ggp-wam.lisp")))

(defun run-test% ()
  ; (format t "PAIP (Compiled) --------------------~%")
  ; (time (paiprolog-test::dfs-exhaust))

  ; (format t "PAIP (Interpreted) -----------------~%")
  ; (time (bones.paip::depth-first-search :exhaust t))

  (format t "WAM --------------------------------~%")
  (time (bones.wam::depth-first-search :exhaust t)))

(defmacro run-test (&rest settings)
  `(progn
    (declaim (optimize ,@settings))
    (format t "~%~%========================================================~%")
    (format t "~S~%" ',settings)
    (format t "--------------------------------------------------------~%")
    (reload)
    (run-test%)))

; (run-test (speed 3) (safety 1) (debug 1))
(run-test (speed 3) (safety 0) (debug 0))