# HG changeset patch # User Ryoma SHINYA # Date 1284356453 -32400 # Node ID f5fb37614d52a967f2bc754da784f4a6144ff618 # Parent df4ce962e5ce9e2d1f5cf7667ae9eb7ac7b236bd add utf-8 description diff -r df4ce962e5ce -r f5fb37614d52 presen/index.html --- a/presen/index.html Mon Sep 13 12:18:26 2010 +0900 +++ b/presen/index.html Mon Sep 13 14:40:53 2010 +0900 @@ -55,7 +55,8 @@ @@ -75,7 +76,8 @@

ex: "(A|B)*C" -> "A"または"B", の0回以上の繰り返し直後に"C": "C","ABC","ABBBBC"

  • GNU grep などのテキスト検索ツール等で利用されている.


  • -
  • 正規表現は(NFAを経て)等価なDFA(決定性有限オートマトン)に変換可能.
  • +
  • 正規表現は(NFAを経て)等価なDFA(決定性有限オートマトン)に変換可能.
  • +
  • 主張: DFAは直接コードで表現できる.
  • @@ -219,6 +221,7 @@ LLVM-IR (LLVM)0.044s0.08s0.47s
  • LLVMによるコンパイルが, GCCによるコンパイルに比べ10倍程高速な結果がでた.
  • +
  • 主張: コンパイル速度はあまり重要でない.
  • @@ -228,7 +231,7 @@
  • コンパイルされたプログラムの実行速度
  • 生成されたコードは, 関数呼び出しとswitch文によるシンプルなプログラムなので, 最適化によって性能の等しいネイティブコードが生成されたためと思われる.
  • CbCでは, 関数呼び出しより軽量な状態遷移である継続を用いて実装しているため, コンパイラの最適化に依らず性能の高いコードが保証されている -> 生成コードとして最適.
  • @@ -248,6 +251,7 @@ simple-regex: 単純な正規表現 complex-regex: 複雑な正規表現 +

    "複雑さ" = 変換されたDFAの状態数/遷移規則の多さ.

    @@ -341,6 +344,30 @@
  • 同様のパターンで何度もマッチングを行うプログラムと相性が良い.
  • スパムフィルタの単語検索など.
  • + ご清聴ありがとうございました. + + + +
    +

    付録: UTF-8

    + +
    + +
    +

    正規表現: UTF-8

    +