cl-ppcre使ってみた
ytakenakaさんに薦めて頂いたCL-PPCREを使ってみました。
あと、インストールの為にASDFも初めて使ってみることに。
;;; 最初からASDFが入っているSBCLで試しました * (require 'asdf-install) * (require 'asdf) * (asdf-install:install :cl-ppcre) ;; 個人向けインストールかPC全体へのインストールか選択 ;; ダウンロード先を信頼していいのか選択 * (asdf:oos 'asdf:load-op :clppcre) ;; これでCL-PPCREを使う準備が完了したみたいです
インストール時の質問が、デバッガを利用して作られており、なかなか面白かったです。
で、使い方もよくわからないままに、とりあえず自分のプログラムと速度を比べてみました。
(defvar *rep-text* "This is ''bold'' and '''italic''' test.") (defun bench%% () (declare (optimize (speed 3) (safety 0) (space 0))) (time (dotimes (_ 1000) (inner-line-convert (the string *rep-text*)))) (time (dotimes (_ 1000) (cl-ppcre:regex-replace-all "''(.+)''" (cl-ppcre:regex-replace-all "'''(.+)'''" (the string *rep-text*) (list "<i>" 0 "</i>")) (list "<b>" 0 "</b>")))))
* (bench%%) ;; 自作プログラム Evaluation took: 0.054 seconds of real time 0.054610 seconds of total run time (0.054610 user, 0.000000 system) [ Run times consist of 0.004 seconds GC time, and 0.051 seconds non-GC time. ] 101.85% CPU 81,858,953 processor cycles 16,181,024 bytes consed ;; CL-PPCRE Evaluation took: 0.026 seconds of real time 0.025287 seconds of total run time (0.025287 user, 0.000000 system) 96.15% CPU 37,694,210 processor cycles 2,367,952 bytes consed
見事に負けました。
それから、CL-PPCREかなり適当に書いたので、おそらくもっと頑張れそうです。
ボロ負け \(^o^)/