;ELC   
;;; Compiled
;;; in Emacs version 31.0.50
;;; with all optimizations.


#@13 

(fn ITEM)
(defalias 'second #[257 "\211A@\207" [] 2 (#$ . 86)])
(defalias 'third #[257 "\3008\207" [2] 3 (#$ . 86)])
(defalias 'fourth #[257 "\3008\207" [3] 3 (#$ . 86)])#@281 Call `benchmark-run-compiled' on BODY with TIMES iterations, returning list suitable for Org source block evaluation.
Garbage is collected before calling `benchmark-run-compiled' to
avoid counting existing garbage which needs collection.

(fn &optional (TIMES 100000) &rest BODY)
(defalias 'bench '(macro . #[128 "\211\203 \211A\262\242\202 \300\301\302\303\304\305\306\301	BEFE\207" [100000 progn (garbage-collect) list '("Total runtime" "# of GCs" "Total GC runtime") 'hline benchmark-run-compiled] 11 (#$ . 267)]))#@718 Return Org table as a list with benchmark results for FORMS.
Runs FORMS with `benchmark-run-compiled' for TIMES iterations.

When ENSURE-EQUAL is non-nil, the results of FORMS are compared,
and an error is raised if they aren't `equal'. If the results are
sequences, the difference between them is shown with
`seq-difference'.

When RAW is non-nil, the raw results from
`benchmark-run-compiled' are returned instead of an Org table
list.

If the first element of a form is a string, it's used as the
form's description in the bench-multi-results; otherwise, forms
are numbered from 0.

Before each form is run, `garbage-collect' is called.

See source for a usage example.

(fn &key (TIMES 1) FORMS ENSURE-EQUAL RAW)
(byte-code "\300\301\302\303#\300\207" [function-put bench lisp-indent-function defun] 4)
(defalias 'bench-multi '(macro . #[128 "\300\301\"\206 \302A@\300\303\"A@\300\304\"A@\300\305\"A@\306\307!\306\310!\311!\211\312\313\312:\203[ @\262@;\203K @\233\2118A@\240\266\202L B\262A\262T\262\202) \266\203\237\314\315\316\317\320\321\322	\312\313\312\211\211:\203\253 @\2628\262\315\323\324\325\203\225 \326	\f\327BBB\202\227 \nEEEB\262A\262T\262\210\312\202n \210\266\204\237B\330BBDD\n\2059\331\332\n\333\334\335\336\337\313\340\341\342D\343BB\344\345\346\347\336E\327BB\346\347\350E\327BBE\351\352\353\317\354\355\356\357\360\361\347\336!E\362\347\350#E\363BBBBB\360\361\347\350\"E\362\347\336$E\363BBBBBEDE\364BB\365\366\347\336E\347\350E\346\347\336 E\327BB\346\347\350!E\327BB\257F\257\352\n\367\370\371D\372DEFFE\373BB\207" [plist-member :times (nil 1) :forms :ensure-equal :raw gensym "keys" "result-times" cl-copy-list nil 0 unwind-protect progn (defvar bench-multi-results nil) let* (bench-multi-results (make-hash-table)) sort list (garbage-collect) cons benchmark-run-compiled puthash (bench-multi-results) ((lambda (a b) (< (nth 1 a) (nth 1 b)))) cl-loop with = (hash-table-keys bench-multi-results) for i from to - length (2) unless equal gethash nth (1+ i) do if (sequencep (gethash (car (hash-table-keys bench-multi-results)) bench-multi-results)) (k1) (k2) difference or setq k1 k2 (difference (seq-difference (gethash k1 bench-multi-results) (gethash k2 bench-multi-results))) ((user-error "Forms' bench-multi-results not equal: difference (%s - %s): %S" k1 k2 difference)) user-error "Forms' bench-multi-results not equal: %s:%S %s:%S" append quote (("Form" "x fastest" "Total runtime" "# of GCs" "Total GC runtime") hline) bench-multi-process-results ((unintern 'bench-multi-results nil))] 43 (#$ . 798)]))#@57 Return sorted RESULTS with factors added.

(fn RESULTS)
(byte-code "\300\301\302\303#\300\207" [function-put bench-multi lisp-indent-function defun] 4)
(defalias 'bench-multi-process-results #[257 "\300\301\"\262\211G\302\303\211\211\211W\203s 8@\262\302=\203% \304\2025 \305\306\307\n8!\307\n@!\245\"\262\305\310\307	\f8!\"\3118!\312	\f8!\302V\203c \305\310\3128!\"\202d \302\257B\262T\262\210\303\202 \237\207" [sort #[128 "\211AA\203 \302\301\303\300\"\"\207\211A\203 \301\300@!\300A@!\"\207\211\203* \301\300@!!\207\301 \207" [second < apply mapcar] 6 "\n\n(fn &rest ARGS)"] 0 nil "fastest" format "%.2f" second "%.6f" third fourth] 16 (#$ . 3418)])#@307 Return Org table as a list with benchmark results for FORMS.
Runs FORMS from a byte-compiled temp file with `lexical-binding'
enabled, using `bench-multi', which see.

Afterward, the temp file is deleted and the function used to run
the benchmark is uninterned.

(fn &key (TIMES 1) FORMS ENSURE-EQUAL RAW)
(defalias 'bench-multi-lexical '(macro . #[128 "\300\301\"\206 \302A@\300\303\"A@\300\304\"A@\300\305\"A@\306\307\310\311\312\313\314\315\314\316\317\320\321D\257\257E\322BBB\207" [plist-member :times (nil 1) :forms :ensure-equal :raw let* ((temp-file (concat (make-temp-file "bench-multi-lexical-") ".el")) (fn (gensym "bench-multi-lexical-run-"))) with-temp-file temp-file insert ";; -*- lexical-binding: t; -*-" "\n\n" "(defvar bench-multi-results)" format "(defun %s () (bench-multi :times %d :ensure-equal %s :raw %s :forms %S))" fn quote ((unwind-protect (if (byte-compile-file temp-file 'load) (funcall (intern (symbol-name fn))) (user-error "Error byte-compiling and loading temp file")) (delete-file temp-file) (unintern (symbol-name fn) nil)))] 22 (#$ . 4120)]))
(byte-code "\300\301\302\303#\300\207" [function-put bench-multi-lexical lisp-indent-function defun] 4)
