Next: Optimizing for Size, Previous: Optimization, Up: Optimization
多くのプログラムは、 字句解析の処理に多くの時間を費やします。 したがって、 スキャナの最適化はかなり大きな性能改善に結びつくことが多いのです。 Flexによるスキャナは、 Lexによるスキャナと比較するとかなり高速になる傾向がありますが、 特定の構成もしくはアクションによって、 性能に大きな影響を与えることができます。 注意すべき点は以下のとおりです。
REJECT
と同じくらい悪影響を及ぼすもので、
可能な場合にはいつでも避けるべきです。
この例を示すと、
以下のようになります。
%% linux|hurd/(OS|"Operating system")
これは、 以下のように分割すべきです。
linux/OS|"Operating system" hurd/OS|"Operating system"
こうすることによって、 問題は解消されます。
yymore
を使うと性能を低下させます。
スピードが最も重要な場合には、
使わないでください。
yytext
環境をセットアップする必要がないからです。
スキャナの実行時間のほとんどは、
内部の高速なマッチング・ループの中で費やされることになります。
NUL
NUL
を含むトークンをマッチするのに時間がかかります。
この場合には、
短いテキストにマッチするようルールを記述するほうが良いでしょう。
========================================================================
========================================================================