10
Help us understand the problem. What are the problem?

More than 5 years have passed since last update.

posted at

updated at

Organization

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

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必須ですね。

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
10
Help us understand the problem. What are the problem?