Skip to content

Commit f67b556

Browse files
committed
rearrange benchmarks into dev dir
1 parent 2cb6eb5 commit f67b556

File tree

3 files changed

+46
-6
lines changed

3 files changed

+46
-6
lines changed

dev/benchmark.lisp

+37
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
(in-package #:rope/dev)
2+
3+
;; (progn
4+
;; (sb-ext:restrict-compiler-policy 'speed 3 3)
5+
;; (sb-ext:restrict-compiler-policy 'debug 0 0)
6+
;; ;; (sb-ext:restrict-compiler-policy 'space 0 0)
7+
;; (sb-ext:restrict-compiler-policy 'safety 0 0))
8+
9+
10+
(defparameter *readme*
11+
(merge-pathnames "README.md" (asdf:system-source-directory :rope)))
12+
13+
(defun print-time (time reps length)
14+
(format t "rope size: ~a, ~a microseconds~%"
15+
length
16+
(* 1000000 (/ time reps))))
17+
18+
(defmacro time* (&body body)
19+
`(let ((time))
20+
(sb-ext:call-with-timing
21+
(lambda (&rest plist) (setf time (getf plist :real-time-ms)))
22+
(lambda () ,@body))
23+
(coerce (/ time 1000) 'float)))
24+
25+
(defun benchmark-insert (&optional (reps 1000000))
26+
(with-open-file (s *readme*)
27+
(let* ((starting-rope (split-rope (make-rope s) 1000))
28+
(rope starting-rope))
29+
(dotimes (i 100)
30+
(print-time
31+
(time*
32+
(dotimes (i reps)
33+
(insert-rope rope (random (rope-length rope)) "Hello, world!")))
34+
reps
35+
(rope-length rope))
36+
(force-output)
37+
(setf rope (concat-rope rope starting-rope))))))

dev/graphviz.lisp

+5-5
Original file line numberDiff line numberDiff line change
@@ -22,21 +22,21 @@
2222
(let ((obj (root-rope obj)))
2323
(graph-object-points-to self obj)))
2424

25-
(defmethod graph-object-node ((self (eql 'rope)) (obj branch))
25+
(defmethod graph-object-node ((self (eql 'rope)) (obj rope::branch))
2626
(make-instance 'node
2727
:attributes `(:label ,(format nil "length: ~a~%depth: ~a"
2828
(rope-length obj)
2929
(rope-depth obj)))))
3030

31-
(defmethod graph-object-points-to ((self (eql 'rope)) (obj branch))
31+
(defmethod graph-object-points-to ((self (eql 'rope)) (obj rope::branch))
3232
(list (make-instance 'attributed
33-
:object (branch-right obj)
33+
:object (rope::branch-right obj)
3434
:attributes `(:label "R"))
3535
(make-instance 'attributed
36-
:object (branch-left obj)
36+
:object (rope::branch-left obj)
3737
:attributes `(:label "L"))))
3838

39-
(defmethod graph-object-node ((self (eql 'rope)) (obj leaf))
39+
(defmethod graph-object-node ((self (eql 'rope)) (obj rope::leaf))
4040
(make-instance 'node
4141
:attributes `(:label ,(format nil "~a"
4242
(rope::leaf-string obj))

dev/package.lisp

+4-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,7 @@
11
(defpackage #:rope/dev
22
(:use #:cl #:cl-dot #:rope)
33
(:export
4-
#:graph-ropes))
4+
;; graphviz.lisp
5+
#:graph-ropes
6+
;; benchmark.lisp
7+
))

0 commit comments

Comments
 (0)