branch: externals/phpinspect commit d92f48de6e39bac71e7fe3b06affddbaa87e804e Author: Hugo Thunnissen <de...@hugot.nl> Commit: Hugo Thunnissen <de...@hugot.nl>
Increase number of nodes in splay-tree benchmark --- benchmarks/splay-tree.el | 119 ++++++++++++++++------------------------------- 1 file changed, 40 insertions(+), 79 deletions(-) diff --git a/benchmarks/splay-tree.el b/benchmarks/splay-tree.el index d2ca0d2a63..04792fb1d4 100644 --- a/benchmarks/splay-tree.el +++ b/benchmarks/splay-tree.el @@ -24,48 +24,47 @@ (require 'phpinspect-splayt) - -(defun swap (LIST el1 el2) - "in LIST swap indices EL1 and EL2 in place" - (let ((tmp (elt LIST el1))) - (setf (elt LIST el1) (elt LIST el2)) - (setf (elt LIST el2) tmp))) - -(defun shuffle (LIST) - "Shuffle the elements in LIST. -shuffling is done in place." - (cl-loop for i in (reverse (number-sequence 1 (1- (length LIST)))) - do (let ((j (random (+ i 1)))) - (swap LIST i j))) - LIST) - -(defconst phpi-randomized-access (shuffle (number-sequence 1 10000))) -(defconst phpi-interval-access (number-sequence 1 10000 50)) +(message "starting bench") + +(defun shuffle (list) + (let* ((vec (seq-into list 'vector)) + (length (length vec)) + (n 0)) + (while (< n length) + (let ((i (+ n (random (- length n)))) + (tmp (aref vec n))) + (setf (aref vec n) (aref vec i) + (aref vec i) tmp)) + (cl-incf n)) + (seq-into vec 'list))) + +(defconst phpi-randomized-access (shuffle (number-sequence 1 1000000))) +(defconst phpi-interval-access (number-sequence 1 1000000 50)) (let ((tree (phpinspect-make-splayt)) result) - (message "Splay tree 10000 insertions:") + (message "Splay tree 1000000 insertions:") (garbage-collect) (setq result (benchmark-run 1 - (dotimes (i 10000) + (dotimes (i 1000000) (phpinspect-splayt-insert tree i 'value)))) (message "Elapsed time: %f (%f in %d GC's)" (car result) (caddr result) (cadr result)) - (message "Splay tree 10000 lookups:") + (message "Splay tree 1000000 lookups:") (garbage-collect) (setq result (benchmark-run 1 - (dotimes (i 10000) + (dotimes (i 1000000) (phpinspect-splayt-find tree i)))) (message "Elapsed time: %f (%f in %d GC's)" (car result) (caddr result) (cadr result)) - (message "Splay tree 10000 randomized lookups:") + (message "Splay tree 1000000 randomized lookups:") (garbage-collect) (setq result (benchmark-run 1 @@ -75,11 +74,11 @@ shuffling is done in place." (message "Elapsed time: %f (%f in %d GC's)" (car result) (caddr result) (cadr result)) - (message "Splay tree 10000 repeated (constant number 5) lookups:") + (message "Splay tree 1000000 repeated (constant number 5) lookups:") (garbage-collect) (setq result (benchmark-run 1 - (dotimes (_i 10000) + (dotimes (_i 1000000) (phpinspect-splayt-find tree 5)))) (message "Elapsed time: %f (%f in %d GC's)" @@ -97,7 +96,7 @@ shuffling is done in place." (message "Elapsed time: %f (%f in %d GC's)" (car result) (caddr result) (cadr result)) - (message "Splay tree 10000 items traversal:") + (message "Splay tree 1000000 items traversal:") (garbage-collect) (setq result (benchmark-run 1 @@ -108,7 +107,7 @@ shuffling is done in place." (car result) (caddr result) (cadr result)) - (message "Splay tree 10000 items LR traversal:") + (message "Splay tree 1000000 items LR traversal:") (garbage-collect) (setq result (benchmark-run 1 @@ -120,29 +119,29 @@ shuffling is done in place." (let (map result) - (message "Hashtable 10000 insertions:") + (message "Hashtable 1000000 insertions:") (garbage-collect) (setq result (benchmark-run 1 (progn - (setq map (make-hash-table :test #'eq :size 10000 :rehash-size 1.5)) - (dotimes (i 10000) + (setq map (make-hash-table :test #'eq :size 1000000 :rehash-size 1.5)) + (dotimes (i 1000000) (puthash i 'value map))))) (message "Elapsed time: %f (%f in %d GC's)" (car result) (caddr result) (cadr result)) - (message "Hashtable 10000 lookups:") + (message "Hashtable 1000000 lookups:") (garbage-collect) (setq result (benchmark-run 1 - (dotimes (i 10000) + (dotimes (i 1000000) (ignore (gethash i map))))) (message "Elapsed time: %f (%f in %d GC's)" (car result) (caddr result) (cadr result)) - (message "Hashtable 10000 iterations:") + (message "Hashtable 1000000 iterations:") (garbage-collect) (setq result (benchmark-run 1 @@ -155,28 +154,28 @@ shuffling is done in place." (require 'avl-tree) (let ((avl-tree (avl-tree-create #'car-less-than-car)) result) - (message "AVL tree 10000 insertions:") + (message "AVL tree 1000000 insertions:") (garbage-collect) (setq result (benchmark-run 1 - (dotimes (i 10000) + (dotimes (i 1000000) (avl-tree-enter avl-tree (cons i 'value))))) (message "Elapsed time: %f (%f in %d GC's)" (car result) (caddr result) (cadr result)) - (message "AVL tree 10000 lookups:") + (message "AVL tree 1000000 lookups:") (garbage-collect) (setq result (benchmark-run 1 - (dotimes (i 10000) + (dotimes (i 1000000) (avl-tree-member avl-tree (cons i nil))))) (message "Elapsed time: %f (%f in %d GC's)" (car result) (caddr result) (cadr result)) - (message "AVL tree 10000 randomized lookups:") + (message "AVL tree 1000000 randomized lookups:") (garbage-collect) (setq result (benchmark-run 1 @@ -186,11 +185,11 @@ shuffling is done in place." (message "Elapsed time: %f (%f in %d GC's)" (car result) (caddr result) (cadr result)) - (message "AVL tree 10000 repeated (constant number 5) lookups:") + (message "AVL tree 1000000 repeated (constant number 5) lookups:") (garbage-collect) (setq result (benchmark-run 1 - (dotimes (_i 10000) + (dotimes (_i 1000000) (avl-tree-member avl-tree (cons 5 nil))))) (message "Elapsed time: %f (%f in %d GC's)" @@ -207,49 +206,11 @@ shuffling is done in place." (message "Elapsed time: %f (%f in %d GC's)" (car result) (caddr result) (cadr result)) - (message "AVL tree 10000 items LR traversal:") + (message "AVL tree 1000000 items LR traversal:") (garbage-collect) (setq result (benchmark-run 1 - (iter-do (i (avl-tree-iter avl-tree)) - (ignore i)))) + (avl-tree-mapc #'ignore avl-tree))) (message "Elapsed time: %f (%f in %d GC's)" (car result) (caddr result) (cadr result))) - -;; Results (ran at [2024-09-08 12:38]) - -;; Splay tree 10000 insertions: -;; Elapsed time: 0.006073 (0.000000 in 0 GC’s) -;; Splay tree 10000 lookups: -;; Elapsed time: 0.003990 (0.000000 in 0 GC’s) -;; Splay tree 10000 randomized lookups: -;; Elapsed time: 0.021418 (0.000000 in 0 GC’s) -;; Splay tree 10000 repeated (constant number 5) lookups: -;; Elapsed time: 0.000526 (0.000000 in 0 GC’s) -;; Splay tree repeated lookups (repeat x10, interval 50): -;; Elapsed time: 0.000445 (0.000000 in 0 GC’s) -;; Splay tree 10000 items traversal: -;; Elapsed time: 0.005147 (0.000000 in 0 GC’s) -;; Splay tree 10000 items LR traversal: -;; Elapsed time: 0.000764 (0.000000 in 0 GC’s) - -;; Hashtable 10000 insertions: -;; Elapsed time: 0.000457 (0.000000 in 0 GC’s) -;; Hashtable 10000 lookups: -;; Elapsed time: 0.000250 (0.000000 in 0 GC’s) -;; Hashtable 10000 iterations: -;; Elapsed time: 0.000135 (0.000000 in 0 GC’s) - -;; AVL tree 10000 insertions: -;; Elapsed time: 0.009241 (0.000000 in 0 GC’s) -;; AVL tree 10000 lookups: -;; Elapsed time: 0.003807 (0.000000 in 0 GC’s) -;; AVL tree 10000 randomized lookups: -;; Elapsed time: 0.004335 (0.000000 in 0 GC’s) -;; AVL tree 10000 repeated (constant number 5) lookups: -;; Elapsed time: 0.003099 (0.000000 in 0 GC’s) -;; AVL tree repeated lookups (repeat x10, interval 50): -;; Elapsed time: 0.000650 (0.000000 in 0 GC’s) -;; AVL tree 10000 items LR traversal: -;; Elapsed time: 0.004814 (0.000000 in 0 GC’s)