https://github.com/ichimal/cl-performance-tuning-helper.git
git clone 'https://github.com/ichimal/cl-performance-tuning-helper.git'
(ql:quickload :cl-performance-tuning-helper)
CLOAD
:load a file after compile.
e.g. (pth:cload "src")
for compile and load “src.lisp
”.
ASMOUT
:save DISASSEMBLE
result for given function into a file. You can specify saving filename optionally.
When a function is given as an symbol s.t. 'SOME-FUNCTION
, the default filename is a lowercase version of the symbol name with “.asm
” suffix.
e.g. (pth:asmout 'SOME-PACKAGE:SOME-FUNCTION)
saves DISASSEMBLE
result for #'SOME-PACKAGE:SOME-FUNCTION
into “some-function.asm
”.
When a function is given as a lambda expression or a function itself (i.e. #'SOME-FUNCTION
or (SYMBOL-FUNCTION 'SOME-FUNCTION)
), you must specify filename explicitly.
e.g. (pth:asmout (lambda (x y) (+ x y)) "binary-add.asm")
saves DISASSEMBLE
result of a given lambda expression into “binary-add.asm
”. In this case, suffix (“.asm
”) is not appended automatically.
PERFORMANCE
:simple performance checker.
e.g. 1 (pth:performance 100 debugger-p (some-function args...))
tries to eval SOME-FUNCTION
100 times with specified args.
After all, displays execution information by TIME
macro.
PTH:PERFORMANCE
returns t if all eval has been done successfully.
When a condition has been signaled;
nil
:PTH:PERFORMANCE
returns nil
.nil
:e.g. 2
target function also able to access current-num-repeats.
(let ((max 5))
(pth:performance (count max) nil
(format t "~&~d of ~d~%" count max) ))
;;; performance test for FORMAT 5 times
;;; do (FORMAT T "~&~d of ~d~%" COUNT MAX)
0 of 5
1 of 5
2 of 5
3 of 5
4 of 5
(and implementation dependant TIME macro result)
; => T
under MIT license.