;; -*- lexical-binding: t; -*- (require 'shr) (defun bench/git (&rest args) (car (apply 'process-lines "git" "-C" source-directory args))) (defun bench/describe-emacs () (let* ((fork-point (bench/git "merge-base" "--fork-point" "origin/master" emacs-repository-version)) (git-desc (bench/git "show" "--date=short" "--format=format:%cd; %h" fork-point))) (format "%s; %-7s; %s" git-desc emacs-version emacs-repository-branch))) (let ((dom (with-temp-buffer (insert-file-contents "test.html") (libxml-parse-html-region))) (emacs-desc (bench/describe-emacs))) (dolist (val '(nil t)) (setopt shr-fill-text val) (pcase-let ((`(,total-time ,gc-count ,gc-time) (benchmark-run 1000 (with-temp-buffer (shr-insert-document dom))))) (message "%s\tshr-fill-text=%s\t(%6.3f %d %6.3f)" (bench/describe-emacs) shr-fill-text total-time gc-count gc-time))))