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^)/

Leave a Reply