11
10

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

OpenRestyのre.matchとstring.matchの性能差

Last updated at Posted at 2015-02-28

OpenRestyで正規表現を利用する場合、
高機能なre.matchを利用したくなりますが
Lua純正のstring.matchと比較してどの程度性能に差があるのかを調べてみました。

環境

Dockerfileを公開しているので、こちらで再現できると思います。

サーバ

  • EC2: t2.medium

ベンチマークコマンド

re.matchがOpenRestyのコアライブラリのため
HTTP経由でベンチマークを取っています。
cというパラメータを付けると正規表現のループ回数を指定できます。

curl localhost/lua/string_match\?c=10000000

ソースコード

こちら をご参照ください。

結果

短いほど良い値です。

パス pcre_jit かかった時間(sec)
string_match - 2.18
re_match off 12.86
re_match on 12.63
re_match_optimize off 5.55
re_match_optimize on 4.48

まとめ

性能だけ比較すると string_match の勝ち。
re_matchを利用してもoptimizeオプションを付けておけば
だいぶマシになりました。
またre_matchの非optimize時、メモリがモリモリ増えてしまって大変でした。
optimize必須ですね。

11
10
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
11
10

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?