C++で正規表現 (ベンチマーク)
各ライブラリに速度差があるのかどうか調べてみた。
とあるブログをソースとして、テキストの一致判定を行った。一部を削ってみて4パターンで実行した結果は以下の通り。ビルド環境はPentiumM 1.8GHz、Visual C++ 6.0 SP5。単位はmicrosec、sizeは被検索文字列の大きさである。
size | PCRE 6.6 | Boost 1.33.1 | BREGEXP.DLL 2.0.4.29 |
---|---|---|---|
1KB | 21 | 6 | 8 |
4KB | 116 | 35 | 1042 |
15KB | 364 | 152 | 2223 |
100KB | 2503 | 960 | 失敗 |
PCREはそこそこの性能が出ている。
Boostはサイズが大きくなってもそれほど遅くならず、優秀である。
BREGEXPはサイズが小さいと高速だが、サイズが大きくなるに従って遅くなり、15KBほどでギブアップした。