SlideShare ist ein Scribd-Unternehmen logo
1 von 42
Downloaden Sie, um offline zu lesen
世界最速の正規表現
                        JITエンジンの実装
                         Ryoma Sin’ya (@sinya8282)
                       サイボウズ・ラボユース最終成果報告会
                         2012/3/26 at 秋葉原ダイビル


Monday, March 26, 12
皆さん
                       正規表現は
                       お好きですか?

Monday, March 26, 12
僕は正規表現が
            好きじゃありません



Monday, March 26, 12
僕は正規表現が
            好きじゃありません
                        愛してます

Monday, March 26, 12
%	 whoami
 • 新屋                  良磨 (@sinya8282)
      • 東京工業大学修士一年
      • 一期生では最年長
           • 精神は林君が最年長説


      • 好きな表現は正規表現
      • 好きな言語は正規言語
      • 好きな曲は




Monday, March 26, 12
%	 whoami
 • 新屋                  良磨 (@sinya8282)
      • 東京工業大学修士一年
      • 一期生では最年長
           • 精神は林君が最年長説


      • 好きな表現は正規表現
      • 好きな言語は正規言語
      • 好きな曲は
            • Regular     Expression
                (by Broken Drum)

Monday, March 26, 12
サイボウズ・ラボユース
                     ではなにを?
             • 正規表現エンジンの実装,             高速化
                       • DFAをJITして高速化 (実行時コード生成)
                       • オートマトンのデータ並列実行による高速化
             • 正規表現を利用したツール/システムの開発
                  • テキスト検索(grep)
                  • 正規表現変換ツール
                  • 正規表現の拡張演算子等
             • エンジンはgithubで公開        → Regen(レーゲン)


Monday, March 26, 12
なぜ正規表現エンジン?
             • 正規表現の歴史は古い。種類(亜種)も多い

            I define UNIX as “30 definitions of regular
              expressions living under one roof.” — Don Knuth

             • 実装も多い(本当に多い)
                  • GNU   grep, Google RE2, 鬼車, PCRE, TRE,,,,
             • 車輪の再発明?




Monday, March 26, 12
なぜ正規表現エンジン?
             • 正規表現の歴史は古い。種類(亜種)も多い

            I define UNIX as “30 definitions of regular
              expressions living under one roof.” — Don Knuth

             • 実装も多い(本当に多い)
                  • GNU   grep, Google RE2, 鬼車, PCRE, TRE,,,,
             • 車輪の再発明?

          そうだね。ただし最速の車輪だ。— Ryoma Sin’ya


Monday, March 26, 12
なにが最速?
             • 「正規表現マッチング」が最速
             • 「DFAの状態遷移」が最速       (Not文字列探索)
                  • DFAをJITすることで状態遷移を高速化
                  • データ並列マッチングをサポート
             • なにと比較して?
                  • GoogleRE2, GNU grep, cgrep 等のDFAベースエン
                       ジンと比較して高速(RE2の6~10倍)




Monday, March 26, 12
なにが最速?
             • 「正規表現マッチング」が最速
             • 「DFAの状態遷移」が最速       (Not文字列探索)
                  • DFAをJITすることで状態遷移を高速化
                  • データ並列マッチングをサポート
             • なにと比較して?
                  • GoogleRE2, GNU grep, cgrep 等のDFAベースエン
                       ジンと比較して高速(RE2の6~10倍)

                          詳細はポスターにも!!
Monday, March 26, 12
並列化と実行時コード生成を用いた                                                                                                                                                                                                                                                             正規表現エンジン「Regen」
                                                                                                                                                                                                                                                                                                                    :
                             正規表現マッチングの高速化                                                                                                                                                                                                                                                                &そのツール群の紹介
                                                                                新屋 良磨 †                                光成 滋生 †† 佐々 政孝 †                                                                                                                                                                   Regen でサポートしてる正規表現の拡張演算子, 及びツール群を紹介する.
                                                                                † 東京工業大学 †† サイボウズ・ラボ株式会社                                                                                                                                                                                                  課題や機能についてなど, 多くの意見が聞きたい.

                                   我々は並列化と実行時コード生成を用いた高速な正規表現エンジン Regen を開発した.                                                                                                                                                                                                                拡張演算子
                                   Regen における設計方針や特長を紹介し, 既存実装との違いを説明する.
                                                                                                                                                                                                                                                                                                  ✦ 積集合                               ✦ 弱後方参照
                  Regenのマッチング内部動作                                                                                                                                                                                                                                                                  •   /R1 &R2 /→ R1とR2両方にマッチ          •PCRE等で使える後方参照の制限版
                                                                                                                                                                                                                                                                                                  ✦ 対称差                                •有限パターンの参照なら区別できる.
                                                                                                                                                                                                                                                                                                   •/R1&&R2/→R1かR 一方のみにマッチ             •/(1|2|30?) = (1)/ → 恒等式
                                                                                       [01]                       1                                                                          0                               1
                                                                                                  NFA                                                                                                   DFA
                                                                                                                                                                                                                                                                                                                                       •無限パターン(繰り返し)は区別しない.
                                                                                                                                                                                                                                                                                                                      2
                                                                                                       1
                                                                                                                                        変換
                                                                                                                                                                                                          1
                                                                                                                                                                                                                                                                                                  ✦ 補集合
                                                                                                                                                                                                                                                                                                   •/!(R1)/→R1 にマッチしない列にマッチ            •/(1|2+) = (1)/ →/1 = 1|2+ = 2 + /
                                                                                        q0                        q1                                                                         q0                              q1
                                                                                                       0                                                                                                  0

                                                                パース&変換                                                                                                                                                                   JIT (Χbyak)
                                           正規表現                                                                   変換                                                     変換                                                                                                                       ✦ 逆順                                ✦ 上限付き再帰
                   /(0 ⇤ 1) + /
                                                                                                                                                    0
                                                                                                                                                                                                                                                                                                   •/ ⇠ (R1)/→R1のマッチ文字列の逆文字列 •PCRE等で使える再帰(?R)の制限版
                                                                                                                                                                                                                                                                                                                             •/a@b@c/→“aabcbabcc”
                                                                                                                                                                               1
                                                                                                                                                                                                                                        文字列に対して                                                   ✦ 置換, シャッフル, 非強欲な繰り返し...
                                                                                                                                                                                                                                                                                                   •紹介してる演算全てDFAで実現          •/(@{0, 2})/→ “()”, “(())”, “((()))”
                                                                                                                                                    q1       1
                                                                                                                         0                                   0                 q2                      JIT                              マッチング開始
                                                                                                                                                    1                                                (Χbyak)
                                入力: 正規表現&文字列
                                                                                                                  q0
                                                                                                                               SSFA (並列実行可能なDFA)                                                                                                                                         正規表現から受理文字列出力                               正規表現からDFA(図)出力
                                                                                                                                                                                                                                                                                                                                                                        1

                   Regen内部のコード生成(JIT)部抜粋                                                                                                    コード生成(JIT)による性能向上                                                                                                                                     Example: 論理式を充足する解を全列挙                                          q7
                                                                                                                                                                                                                                                                                                                                                              0         2
                                                                                                                                                                 Google RE2                                            Regen                     Regen JIT                                             (x1 _ x2 _ x3 ) ^ (x1 _ x2 _ x3 )                      1
                                                                                                                                                                                                                                                                                                                                                              3   q9
                                                                                                                                                                                                                                                                                                                                                                        0
                                                                                                                                                                                                                                                                                                                                                                            q12
                                                                                                                                                                                                                                                                                                                                                         q4
                                                                                                                                                         3GB/sec                                                                                                                                                                                                        3
                                                                                                                                                                                                                              Fast                                                                                                                            2
                                                                                                                                                                                                                                                                                                                                                                                  2
                                                                                                                                       Throughput




                                                                                                                                                    2.5GB/sec                                                                                                                                                                                                           2
                                                                                                                                                                                                                                                                                                                                                     3
                                                                                                                                                         2GB/sec                                                                                                                                                                                              3   q10
                                                                                                                                                                                                                                                                                                                                                                        0
                                                                                                                                                                                                                                                                                                                                                                            q13
                                                                                                                                                                                                                                                                                                                                                                                  1
                                                                                                                                                    1.5GB/sec                                                                                                                                                                                        0
                                                                                                                                                                                                                                                                                                                                                         q1
                                                                                                                                                                                                                                                                                                                                                              1         3             q15
                                                                                                                                                                                                                                                                                                                                                                                  0
                                                                                                                                                         1GB/sec                                                                                                                                                                                q0   1        0   q5    1
                                                                                                                                                                                                                              Slow                                                                                                                       q2
                                                                                                                                                                                                                                                                                                                                                                            q14
                                                                                                                                                    0.5GB/sec                                                                                                                                                                                                 2                   3

                                                                                                                                                                                                                                                                                                                                正規表現で
                                                                                                                                                                                                                                                                                                                                                     2                  2
                                                                                                                                                                                                                                                                                                                                                              3
                                                                                                                                                         0GB/sec                                                                                                                                                                                                        3
                                                                                                                                                                               最適化が効かないパターン                                             最適化が効くパターン                                                                              SATを解く!                           q6
                                                                                                           C++ JIT Library                                                      /(([02468][13579]){5})*/                                 /(0123456789)*/                                                                                                 q3   2
                                                                                                                                                                                                                                                                                                                                                                            q11
                                                                                                                                                                                                                                                                                                                                                                        1
                                                                                                             Χbyak                                                                                                                                                                                                                                            0   q8
                                                                                                                                                                                                                                                                                                                                                                        0


                   並列マッチングによる性能向上                                                                                                              並列化のオーバーヘッド                                                                                                                                                                                                    1


                                                 正規表現: /([0-4]{5}[5-9]{5})*/, 入力: 1GB                                                                       正規表現: /(([02468][13579]){5})*/, 入力: 100KB~1000KB
                                                                                                                                                                                                                                                                                             実装済みツール群                                今後の課題
                           [GB/sec]
                                                                                                                                                                                                                                                                                                  ✦ 正規表現Lib: Regen                   ✦ 他アーキテクチャ対応
                                                                                                                                                                                                                                                                                                   •                                  • 今はX86-64のみ(Χbyak)
                                20                                                                                                                         Slow          ベンチマークA                     ベンチマークB                                                2.40 msec
                                                                                                                                         8,000K
                                                                                                                                                                                                                                                                                                     Google RE2 を参考
                                                                                                                                                                                                                                                                                                   •                                  • LLVM? (抽象化で性能落ちない?)
                                                                                                                  Fast
                                                                                                                                       Google RE2                0.263                       0.264
                               17.5                                                                                                      7,200K
                                                                                                                         Clock Cycle




                                                                                                                                                                                                                                                                                                     Submatch 未対応
                                                                                                                                       Regen O0                                      0.449                     0.448
                                                                                                                                                                                                                                                            1.92 msec
                  Throughput




                                15                                                                                                       6,400K
                                                                                                                                       Regen O3                                      1.521                     2.761

                                                                                                                                           5,600K
                                                                                                                                                                                                                                                                                                  ✦ 正規表現変換系: recon                   ✦ Submatch(キャプチャ)の対応
                                                                                                                                                                                                                                                                                                   •                                  • 現在でもマッチした文字列全体の取得は可能.
                               12.5                                                                                                                                                                                                                         1.44 msec
                                                                                                                                           4,800K
                                10                                                                                                                                                                                                                                                                   正規表現 to 正規表現
                                                                                                                                                                                                                                                                                                   •                                  • マッチした文字列の部分的な取得は未対応
                                                                                                                                           4,000K
                                                                                                                                                                                                                                                            0.96 msec
                                                                                                                                                            Fast
                                                                                                                                                                                                                                                                                                     正規表現 to DFA(図)
                                7.5                                                                                                        3,200K



                                                                                                                                                                                                                                                                                                   •
                                                                                                                                           2,400K

                                                                                                                                                                                                                                                                                                     正規表現 to 受理文字列                   ✦ 性能を生かしたツール/システムの考案
                                   5                                                                                                                                                                                                                        0.48 msec
                                                                                                                                           1,600K
                                2.5
                                                                                                                  Slow                         800K
                                                                                                                                                                                                                                                                                                    grep: regengrep
                                                                                                                                                                                                                                                                                                  ✦
                                                                                                                                                                                                                                                                                                   •
                                   0                                                                                                                0K
                                                                                                                                                                                                                                                            [KB]
                                                                                                                                                                                                                                                                                                     JIT版は高速.
                                                                                                                                                           100           200        300          400      500          600        700    800   900   1000
                                       1                2           3            4                5           6


                                                                                                                                                                                                                                                                                                   •
                                                                                                                                                                                                        Input size
                                                             Number of Threads
                                                       Regen              Regen JIT                   Read only
                                                                                                                                                                                    1スレッド
                                                                                                                                                                                    1スレッドJIT
                                                                                                                                                                                                                             2スレッド
                                                                                                                                                                                                                             2スレッドJIT
                                                                                                                                                                                                                                                                                                     まだ開発中(速度,機能)

                                                                                                                                                                                                                                                                        Thursday, January 5, 12
      Thursday, January 5, 12




                       1                   2            3           4            5            6

gen                        0.449               0.897        1.327       1.759        2.236        2.681



      Monday, March 26, 12
gen JIT                    2.321               4.550        6.917       9.167        11.27
                                                                                     Text         13.59

ad                         6.041               12.11        16.60       18.37        18.89        19.17
実装の詳細は色々なとこで
             • 「並列化と実行時コード生成を用いた正規表現
                 マッチングの高速化」
                  •    日本ソフトウェア科学会第28回大会 (書き直し中)
                  •    第53回プログラミング・シンポジウム - 予稿, ポスター

             • 「正規表現とJITと並列化とベンチマーク」
                  •    x86/x64最適化勉強会1 - スライド

             • 「正規表現の限界」
                  •    Shibuya.pm ~夏の正規表現祭り~ - スライド




Monday, March 26, 12
実装の詳細は色々なとこで
             • 「並列化と実行時コード生成を用いた正規表現
                 マッチングの高速化」
                  •    日本ソフトウェア科学会第28回大会 (書き直し中)
                  •    第53回プログラミング・シンポジウム - 予稿, ポスター

             • 「正規表現とJITと並列化とベンチマーク」
                  •    x86/x64最適化勉強会1 - スライド

             • 「正規表現の限界」
                  •    Shibuya.pm ~夏の正規表現祭り~ - スライド

                        じゃあ今日はなにを喋る?
Monday, March 26, 12
オリジナルな成果
  • DFA-JITによる正規表現マッチングの高速化
       • JIT特有の最適化等
  • データ並列マッチングによる高速化
       • オートマトンを拡張


  • 正規表現の拡張演算の提案/実装
       • 弱後方参照,        上限付き再帰, 非強欲繰り返し(DFAver)




Monday, March 26, 12
オリジナルな成果
  • DFA-JITによる正規表現マッチングの高速化
       • JIT特有の最適化等
  • データ並列マッチングによる高速化
       • オートマトンを拡張


  • 正規表現の拡張演算の提案/実装
       • 弱後方参照,        上限付き再帰, 非強欲繰り返し(DFAver)


                        全部喋りたい...
Monday, March 26, 12
正規表現エンジン
                       開発過程を時系列で




Monday, March 26, 12
正規表現エンジン
                       開発過程を時系列で


 2011年
       3月 4            5   6   7   8   9   10   11   12


Monday, March 26, 12
上京。
                          正規表現エンジン
                         この時、正規表現(DFA)をJIT
                       開発過程を時系列で
                        する方法で悩んでいた。
                       (自前, gcc, asm, llvm, libjit, gnu lightning...)


 2011年
       3月 4               5      6      7     8      9     10     11    12


Monday, March 26, 12
ラボユース採択(神タイミング)。
                        正規表現エンジン
                       開発過程を時系列で


 2011年
       3月 4             5   6   7   8   9   10   11   12


Monday, March 26, 12
C++製JITライブラリXbyakで
                        正規表現エンジン
                         正規表現JIT。動いた。

                       開発過程を時系列で
                       ・X86最適化の権化、光成さんの
                        熱血指導の賜物?


 2011年
       3月 4             5   6   7   8   9   10   11   12


Monday, March 26, 12
DFA-JIT
                       C++製JITライブラリXbyakで
                        正規表現エンジン
                         正規表現JIT。動いた。

                       開発過程を時系列で
                       ・X86最適化の権化、光成さんの
                        熱血指導の賜物?


 2011年
       3月 4             5   6   7   8   9   10   11   12


Monday, March 26, 12
DFA-JIT
                         エントリー
           (レジスタ調整,初期状態へジャンプ)
                                      状態コード詳細 (24 Byte)
                        C++製JITライブラリXbyakで
                       状態0のコー
                           正規表現エンジン
                           正規表現JIT。動いた。
                       状態1のコー     cmp	 	 	 	 rdi,rsi	 #終端判定
                        je	 	 	 	 	 0x120005030
                         開発過程を時系列で
                        movzx	 	 r10,BYTE	 PTR	 [rdi]
               ・X86最適化の権化、光成さんの
                        inc	 	 	 	 rdi
             状態遷移テーブル
                熱血指導の賜物?jmp	 	 	 	 QWORD	 PTR	 [rdx
                        +r10*8]

    •コード生成は JIT ライブラリ Χbyak を使用.
 2011年
   3月
      •4 5 サイボウズ・ラボ 光成氏が開発.12
       Χbyak:
              6 7 8 9 10 11


Monday, March 26, 12
C++製JITライブラリXbyakで
                        正規表現エンジン
                         正規表現JIT。動いた。

                       開発過程を時系列で
                       ・X86最適化の権化、光成さんの
                        熱血指導の賜物?


 2011年
       3月 4             5   6   7   8   9   10   11   12


Monday, March 26, 12
正規表現のデータ並列マッチン
                        正規表現エンジン
                       グを実装。(オートマトンを拡張)

                       開発過程を時系列で
                       ・巨大なテキストの全体マッチング
                        では台数効果が見込める。
                           (詳細はポスターで)

 2011年
       3月 4             5   6   7   8   9   10   11   12


Monday, March 26, 12
データ並列マッチング
                       正規表現のデータ並列マッチン
                        正規表現エンジン
                       グを実装。(オートマトンを拡張)

                       開発過程を時系列で
                       ・巨大なテキストの全体マッチング
                        では台数効果が見込める。
                           (詳細はポスターで)

 2011年
       3月 4             5   6   7   8   9   10   11   12


Monday, March 26, 12
データ並列マッチング
                       マッチングの並列化 = 状態遷移の並列化
                   a q1 b q3 a q1 a q2
                 正規表現のデータ並列マッチン
                q0
                   正規表現エンジン
                 グを実装。(オートマトンを拡張)
                •このような状態遷移を
                       開発過程を時系列で
                       ・巨大なテキストの全体マッチング
                                  a
                          a ? b 結果1  a
                        では台数効果が見込める。
                        ?
                           (詳細はポスターで)   q2
                         ?   ?   結果2
 2011年
     •のように文字単位で並列に実行
   3月 4 5  6 7 8  9 10                   11   12


Monday, March 26, 12
正規表現のデータ並列マッチン
                        正規表現エンジン
                       グを実装。(オートマトンを拡張)

                       開発過程を時系列で
                       ・巨大なテキストの全体マッチング
                        では台数効果が見込める。
                           (詳細はポスターで)

 2011年
       3月 4             5   6   7   8   9   10   11   12


Monday, March 26, 12
最適化、議論、実装、
                           正規表現エンジン
                           イベント、論文、学会....。

                         開発過程を時系列で
                       ・Shibuya.pm「夏の正規表現祭り」(thanks! 竹迫さん)
                       ・x86/x64最適化勉強会1  (thanks! 光成さん)

                       ・日本ソフトウェア科学会第28会大会@沖縄



 2011年
       3月 4                5    6   7    8     9     10   11   12


Monday, March 26, 12
最適化、議論、実装、
                           正規表現エンジン
                           イベント、論文、学会....。
                       ・夏休み(学生)ということで、週3で
                         開発過程を時系列で
                       ・Shibuya.pm「夏の正規表現祭り」(thanks! 竹迫さん)
                        サイボウズ・ラボに出勤。開発。
                       ・x86/x64最適化勉強会1 (thanks! 光成さん)
                       ・ラボメンバーさんとの議論が楽しい!!!
                       ・日本ソフトウェア科学会第28会大会@沖縄
                       ・最適化/並列化/新機能等々,,, 色々 る。


 2011年
       3月 4                5    6   7    8   9    10   11    12


Monday, March 26, 12
ひたすら正規表現
                       正規表現エンジン
                         と戯れる。
                       開発過程を時系列で


 2011年
       3月 4            5   6   7   8   9   10   11   12


Monday, March 26, 12
ひたすら正規表現
                         正規表現エンジン
                          と戯れる。
                        開発過程を時系列で
                       ・正規表現の新しい演算を考える等(ポスター)



 2011年
       3月 4               5   6   7   8   9   10   11   12


Monday, March 26, 12
✦ 弱後方参照
           •有限パターンの参照なら区別できる.
                ひたすら正規表現
           •/(1|2|30?) = (1)/ → 恒等式
                 正規表現エンジン
           •無限パターン(繰り返し)は区別しない.
                     と戯れる。 = 2 + /
               開発過程を時系列で
           •/(1|2+) = (1)/ →/1 = 1|2+
                       ・正規表現の新しい演算を考える等(ポスター)
     ✦ 上限付き再帰
    •/a@b@c/→“aabcbabcc”
 2011年
    •/(@{0, 2})/7→ “()”, 9 10 “((()))”
   3月 4  5    6       8    “(())”, 11 12

Monday, March 26, 12
ひたすら正規表現
                         正規表現エンジン
                          と戯れる。
                        開発過程を時系列で
                       ・正規表現の新しい演算を考える等(ポスター)



 2011年
       3月 4               5   6   7   8   9   10   11   12


Monday, March 26, 12
2012年
       1月 2            3


Monday, March 26, 12
ポスター発表。
                       ・第53回プログラミング・シンポジウム
                        「並列化と実行時コード生成を用いた
                         正規表現マッチングの高速化」
                        → 入り口にあるポスターです。


 2012年
       1月 2               3


Monday, March 26, 12
grepの実装。
                       ・grep高速化のための機能追加
                       ・固定文字列探索の高速化等(未完成)
                       ・ライブラリAPIを整理し始める(ようやく)



 2012年
       1月 2               3


Monday, March 26, 12
なう。




 2012年
       1月 2            3


Monday, March 26, 12
正規表現エンジン
                                Regen
                           githubで開発中!!
                            http://github.com/sinya8282/regen


 2012年
       1月 2            3


Monday, March 26, 12
正規表現エンジン
                                Regen
                           githubで開発中!!
                            http://github.com/sinya8282/regen


 2012年
       1月 2            3
                                 そして伝説へ....
Monday, March 26, 12
サイボウズ・ラボユース
                     ではなにを?(再)
             • 正規表現エンジンの実装,           高速化
                           Regen
                       • 「最速の車輪を。」→
             • 正規表現を利用したツール/システムの開発




Monday, March 26, 12
サイボウズ・ラボユース
                     ではなにを?(再)
             • 正規表現エンジンの実装,           高速化
                           Regen
                       • 「最速の車輪を。」→
             • 正規表現を利用したツール/システムの開発

                       そしてこれからは?
         • 欠点も多い(実装で克服できる?)
              • メモリ使用量,      制限(キャプチャ,,,), 苦手な正規表現,,,

         • ライブラリを完成させにゃ...             (目標: Google RE2)

         • 「文字列探索」以外にも正規表現を。(試行錯誤中)
Monday, March 26, 12

Weitere ähnliche Inhalte

Was ist angesagt?

深層強化学習の分散化・RNN利用の動向〜R2D2の紹介をもとに〜
深層強化学習の分散化・RNN利用の動向〜R2D2の紹介をもとに〜深層強化学習の分散化・RNN利用の動向〜R2D2の紹介をもとに〜
深層強化学習の分散化・RNN利用の動向〜R2D2の紹介をもとに〜Jun Okumura
 
Master Canary Forging: 新しいスタックカナリア回避手法の提案 by 小池 悠生 - CODE BLUE 2015
Master Canary Forging: 新しいスタックカナリア回避手法の提案 by 小池 悠生 - CODE BLUE 2015Master Canary Forging: 新しいスタックカナリア回避手法の提案 by 小池 悠生 - CODE BLUE 2015
Master Canary Forging: 新しいスタックカナリア回避手法の提案 by 小池 悠生 - CODE BLUE 2015CODE BLUE
 
Dockerfile を書くためのベストプラクティス解説編
Dockerfile を書くためのベストプラクティス解説編Dockerfile を書くためのベストプラクティス解説編
Dockerfile を書くためのベストプラクティス解説編Masahito Zembutsu
 
SSII2021 [TS2] 深層強化学習 〜 強化学習の基礎から応用まで 〜
SSII2021 [TS2] 深層強化学習 〜 強化学習の基礎から応用まで 〜SSII2021 [TS2] 深層強化学習 〜 強化学習の基礎から応用まで 〜
SSII2021 [TS2] 深層強化学習 〜 強化学習の基礎から応用まで 〜SSII
 
5分で出来る!イケてるconfluenceページ
5分で出来る!イケてるconfluenceページ5分で出来る!イケてるconfluenceページ
5分で出来る!イケてるconfluenceページCLARA ONLINE, Inc.
 
ctfで学ぼうリバースエンジニアリング
ctfで学ぼうリバースエンジニアリングctfで学ぼうリバースエンジニアリング
ctfで学ぼうリバースエンジニアリングjunk_coken
 
分散システムについて語らせてくれ
分散システムについて語らせてくれ分散システムについて語らせてくれ
分散システムについて語らせてくれKumazaki Hiroki
 
組み込み関数(intrinsic)によるSIMD入門
組み込み関数(intrinsic)によるSIMD入門組み込み関数(intrinsic)によるSIMD入門
組み込み関数(intrinsic)によるSIMD入門Norishige Fukushima
 
学習時に使ってはいないデータの混入「リーケージを避ける」
学習時に使ってはいないデータの混入「リーケージを避ける」学習時に使ってはいないデータの混入「リーケージを避ける」
学習時に使ってはいないデータの混入「リーケージを避ける」西岡 賢一郎
 
Twitterのsnowflakeについて
TwitterのsnowflakeについてTwitterのsnowflakeについて
Twitterのsnowflakeについてmoai kids
 
機械学習モデルフォーマットの話:さようならPMML、こんにちはPFA
機械学習モデルフォーマットの話:さようならPMML、こんにちはPFA機械学習モデルフォーマットの話:さようならPMML、こんにちはPFA
機械学習モデルフォーマットの話:さようならPMML、こんにちはPFAShohei Hido
 
グラフ構造データに対する深層学習〜創薬・材料科学への応用とその問題点〜 (第26回ステアラボ人工知能セミナー)
グラフ構造データに対する深層学習〜創薬・材料科学への応用とその問題点〜 (第26回ステアラボ人工知能セミナー)グラフ構造データに対する深層学習〜創薬・材料科学への応用とその問題点〜 (第26回ステアラボ人工知能セミナー)
グラフ構造データに対する深層学習〜創薬・材料科学への応用とその問題点〜 (第26回ステアラボ人工知能セミナー)STAIR Lab, Chiba Institute of Technology
 
ARM CPUにおけるSIMDを用いた高速計算入門
ARM CPUにおけるSIMDを用いた高速計算入門ARM CPUにおけるSIMDを用いた高速計算入門
ARM CPUにおけるSIMDを用いた高速計算入門Fixstars Corporation
 
定理証明支援系Coqについて
定理証明支援系Coqについて定理証明支援系Coqについて
定理証明支援系CoqについてYoshihiro Mizoguchi
 
Pythonではじめる OpenAI Gymトレーニング
Pythonではじめる OpenAI GymトレーニングPythonではじめる OpenAI Gymトレーニング
Pythonではじめる OpenAI GymトレーニングTakahiro Kubo
 
マルチレイヤコンパイラ基盤による、エッジ向けディープラーニングの実装と最適化について
マルチレイヤコンパイラ基盤による、エッジ向けディープラーニングの実装と最適化についてマルチレイヤコンパイラ基盤による、エッジ向けディープラーニングの実装と最適化について
マルチレイヤコンパイラ基盤による、エッジ向けディープラーニングの実装と最適化についてFixstars Corporation
 
SAT/SMTソルバの仕組み
SAT/SMTソルバの仕組みSAT/SMTソルバの仕組み
SAT/SMTソルバの仕組みMasahiro Sakai
 
高速な倍精度指数関数expの実装
高速な倍精度指数関数expの実装高速な倍精度指数関数expの実装
高速な倍精度指数関数expの実装MITSUNARI Shigeo
 

Was ist angesagt? (20)

深層強化学習の分散化・RNN利用の動向〜R2D2の紹介をもとに〜
深層強化学習の分散化・RNN利用の動向〜R2D2の紹介をもとに〜深層強化学習の分散化・RNN利用の動向〜R2D2の紹介をもとに〜
深層強化学習の分散化・RNN利用の動向〜R2D2の紹介をもとに〜
 
Master Canary Forging: 新しいスタックカナリア回避手法の提案 by 小池 悠生 - CODE BLUE 2015
Master Canary Forging: 新しいスタックカナリア回避手法の提案 by 小池 悠生 - CODE BLUE 2015Master Canary Forging: 新しいスタックカナリア回避手法の提案 by 小池 悠生 - CODE BLUE 2015
Master Canary Forging: 新しいスタックカナリア回避手法の提案 by 小池 悠生 - CODE BLUE 2015
 
Dockerfile を書くためのベストプラクティス解説編
Dockerfile を書くためのベストプラクティス解説編Dockerfile を書くためのベストプラクティス解説編
Dockerfile を書くためのベストプラクティス解説編
 
SSII2021 [TS2] 深層強化学習 〜 強化学習の基礎から応用まで 〜
SSII2021 [TS2] 深層強化学習 〜 強化学習の基礎から応用まで 〜SSII2021 [TS2] 深層強化学習 〜 強化学習の基礎から応用まで 〜
SSII2021 [TS2] 深層強化学習 〜 強化学習の基礎から応用まで 〜
 
5分で出来る!イケてるconfluenceページ
5分で出来る!イケてるconfluenceページ5分で出来る!イケてるconfluenceページ
5分で出来る!イケてるconfluenceページ
 
ctfで学ぼうリバースエンジニアリング
ctfで学ぼうリバースエンジニアリングctfで学ぼうリバースエンジニアリング
ctfで学ぼうリバースエンジニアリング
 
分散システムについて語らせてくれ
分散システムについて語らせてくれ分散システムについて語らせてくれ
分散システムについて語らせてくれ
 
π計算
π計算π計算
π計算
 
組み込み関数(intrinsic)によるSIMD入門
組み込み関数(intrinsic)によるSIMD入門組み込み関数(intrinsic)によるSIMD入門
組み込み関数(intrinsic)によるSIMD入門
 
学習時に使ってはいないデータの混入「リーケージを避ける」
学習時に使ってはいないデータの混入「リーケージを避ける」学習時に使ってはいないデータの混入「リーケージを避ける」
学習時に使ってはいないデータの混入「リーケージを避ける」
 
Twitterのsnowflakeについて
TwitterのsnowflakeについてTwitterのsnowflakeについて
Twitterのsnowflakeについて
 
機械学習モデルフォーマットの話:さようならPMML、こんにちはPFA
機械学習モデルフォーマットの話:さようならPMML、こんにちはPFA機械学習モデルフォーマットの話:さようならPMML、こんにちはPFA
機械学習モデルフォーマットの話:さようならPMML、こんにちはPFA
 
グラフ構造データに対する深層学習〜創薬・材料科学への応用とその問題点〜 (第26回ステアラボ人工知能セミナー)
グラフ構造データに対する深層学習〜創薬・材料科学への応用とその問題点〜 (第26回ステアラボ人工知能セミナー)グラフ構造データに対する深層学習〜創薬・材料科学への応用とその問題点〜 (第26回ステアラボ人工知能セミナー)
グラフ構造データに対する深層学習〜創薬・材料科学への応用とその問題点〜 (第26回ステアラボ人工知能セミナー)
 
ARM CPUにおけるSIMDを用いた高速計算入門
ARM CPUにおけるSIMDを用いた高速計算入門ARM CPUにおけるSIMDを用いた高速計算入門
ARM CPUにおけるSIMDを用いた高速計算入門
 
定理証明支援系Coqについて
定理証明支援系Coqについて定理証明支援系Coqについて
定理証明支援系Coqについて
 
研究効率化Tips Ver.2
研究効率化Tips Ver.2研究効率化Tips Ver.2
研究効率化Tips Ver.2
 
Pythonではじめる OpenAI Gymトレーニング
Pythonではじめる OpenAI GymトレーニングPythonではじめる OpenAI Gymトレーニング
Pythonではじめる OpenAI Gymトレーニング
 
マルチレイヤコンパイラ基盤による、エッジ向けディープラーニングの実装と最適化について
マルチレイヤコンパイラ基盤による、エッジ向けディープラーニングの実装と最適化についてマルチレイヤコンパイラ基盤による、エッジ向けディープラーニングの実装と最適化について
マルチレイヤコンパイラ基盤による、エッジ向けディープラーニングの実装と最適化について
 
SAT/SMTソルバの仕組み
SAT/SMTソルバの仕組みSAT/SMTソルバの仕組み
SAT/SMTソルバの仕組み
 
高速な倍精度指数関数expの実装
高速な倍精度指数関数expの実装高速な倍精度指数関数expの実装
高速な倍精度指数関数expの実装
 

Andere mochten auch

ラボユース最終成果報告会(Web公開版)
ラボユース最終成果報告会(Web公開版)ラボユース最終成果報告会(Web公開版)
ラボユース最終成果報告会(Web公開版)Shinichi Awamoto
 
中間成果報告会 発表資料
中間成果報告会 発表資料中間成果報告会 発表資料
中間成果報告会 発表資料sn_monochr
 
Ruby × Arduinoで フィジカルコンピューティング やってみた
Ruby × Arduinoで フィジカルコンピューティング やってみたRuby × Arduinoで フィジカルコンピューティング やってみた
Ruby × Arduinoで フィジカルコンピューティング やってみたshiftky
 
正規言語でプログラミング
正規言語でプログラミング正規言語でプログラミング
正規言語でプログラミングRyoma Sin'ya
 
人が神姫ん感(原文ママ)を感じるコンピュータ
人が神姫ん感(原文ママ)を感じるコンピュータ人が神姫ん感(原文ママ)を感じるコンピュータ
人が神姫ん感(原文ママ)を感じるコンピュータharu2036
 
C-HelperでC言語を効率的に学習しよう
C-HelperでC言語を効率的に学習しようC-HelperでC言語を効率的に学習しよう
C-HelperでC言語を効率的に学習しようKota Uchida
 
サイボウズ・ラボユース 最終成果報告会プレゼンテーション
サイボウズ・ラボユース 最終成果報告会プレゼンテーションサイボウズ・ラボユース 最終成果報告会プレゼンテーション
サイボウズ・ラボユース 最終成果報告会プレゼンテーションsn_monochr
 
正規言語と代数と論理の対応:An Introduction to Eilenberg’s Variety Theorem
正規言語と代数と論理の対応:An Introduction to Eilenberg’s Variety Theorem正規言語と代数と論理の対応:An Introduction to Eilenberg’s Variety Theorem
正規言語と代数と論理の対応:An Introduction to Eilenberg’s Variety TheoremRyoma Sin'ya
 
サイボウズ・ラボユース成果報告会
サイボウズ・ラボユース成果報告会サイボウズ・ラボユース成果報告会
サイボウズ・ラボユース成果報告会slankdev
 
サイボウズ・ラボ成果発表会
サイボウズ・ラボ成果発表会サイボウズ・ラボ成果発表会
サイボウズ・ラボ成果発表会Komei Kamiya
 
EMNLP 2015 yomikai
EMNLP 2015 yomikai EMNLP 2015 yomikai
EMNLP 2015 yomikai Yo Ehara
 
Humor Recognition and Humor Anchor Extraction
Humor Recognition and Humor Anchor ExtractionHumor Recognition and Humor Anchor Extraction
Humor Recognition and Humor Anchor Extraction裕樹 奥田
 
星野「調査観察データの統計科学」第3章
星野「調査観察データの統計科学」第3章星野「調査観察データの統計科学」第3章
星野「調査観察データの統計科学」第3章Shuyo Nakatani
 
Learning Better Embeddings for Rare Words Using Distributional Representations
Learning Better Embeddings for Rare Words Using Distributional RepresentationsLearning Better Embeddings for Rare Words Using Distributional Representations
Learning Better Embeddings for Rare Words Using Distributional RepresentationsTakanori Nakai
 
星野「調査観察データの統計科学」第1&2章
星野「調査観察データの統計科学」第1&2章星野「調査観察データの統計科学」第1&2章
星野「調査観察データの統計科学」第1&2章Shuyo Nakatani
 
[Yang, Downey and Boyd-Graber 2015] Efficient Methods for Incorporating Knowl...
[Yang, Downey and Boyd-Graber 2015] Efficient Methods for Incorporating Knowl...[Yang, Downey and Boyd-Graber 2015] Efficient Methods for Incorporating Knowl...
[Yang, Downey and Boyd-Graber 2015] Efficient Methods for Incorporating Knowl...Shuyo Nakatani
 
A Neural Attention Model for Sentence Summarization [Rush+2015]
A Neural Attention Model for Sentence Summarization [Rush+2015]A Neural Attention Model for Sentence Summarization [Rush+2015]
A Neural Attention Model for Sentence Summarization [Rush+2015]Yuta Kikuchi
 
Kubernetes in 30 minutes (2017/03/10)
Kubernetes in 30 minutes (2017/03/10)Kubernetes in 30 minutes (2017/03/10)
Kubernetes in 30 minutes (2017/03/10)lestrrat
 
"Mix Automatic Sequences"(LATA'13) の紹介
"Mix Automatic Sequences"(LATA'13) の紹介"Mix Automatic Sequences"(LATA'13) の紹介
"Mix Automatic Sequences"(LATA'13) の紹介Ryoma Sin'ya
 

Andere mochten auch (20)

ラボユース最終成果報告会(Web公開版)
ラボユース最終成果報告会(Web公開版)ラボユース最終成果報告会(Web公開版)
ラボユース最終成果報告会(Web公開版)
 
中間成果報告会 発表資料
中間成果報告会 発表資料中間成果報告会 発表資料
中間成果報告会 発表資料
 
Ruby × Arduinoで フィジカルコンピューティング やってみた
Ruby × Arduinoで フィジカルコンピューティング やってみたRuby × Arduinoで フィジカルコンピューティング やってみた
Ruby × Arduinoで フィジカルコンピューティング やってみた
 
正規言語でプログラミング
正規言語でプログラミング正規言語でプログラミング
正規言語でプログラミング
 
人が神姫ん感(原文ママ)を感じるコンピュータ
人が神姫ん感(原文ママ)を感じるコンピュータ人が神姫ん感(原文ママ)を感じるコンピュータ
人が神姫ん感(原文ママ)を感じるコンピュータ
 
C-HelperでC言語を効率的に学習しよう
C-HelperでC言語を効率的に学習しようC-HelperでC言語を効率的に学習しよう
C-HelperでC言語を効率的に学習しよう
 
サイボウズ・ラボユース 最終成果報告会プレゼンテーション
サイボウズ・ラボユース 最終成果報告会プレゼンテーションサイボウズ・ラボユース 最終成果報告会プレゼンテーション
サイボウズ・ラボユース 最終成果報告会プレゼンテーション
 
正規言語と代数と論理の対応:An Introduction to Eilenberg’s Variety Theorem
正規言語と代数と論理の対応:An Introduction to Eilenberg’s Variety Theorem正規言語と代数と論理の対応:An Introduction to Eilenberg’s Variety Theorem
正規言語と代数と論理の対応:An Introduction to Eilenberg’s Variety Theorem
 
サイボウズ・ラボユース成果報告会
サイボウズ・ラボユース成果報告会サイボウズ・ラボユース成果報告会
サイボウズ・ラボユース成果報告会
 
サイボウズ・ラボ成果発表会
サイボウズ・ラボ成果発表会サイボウズ・ラボ成果発表会
サイボウズ・ラボ成果発表会
 
Emnlp読み会資料
Emnlp読み会資料Emnlp読み会資料
Emnlp読み会資料
 
EMNLP 2015 yomikai
EMNLP 2015 yomikai EMNLP 2015 yomikai
EMNLP 2015 yomikai
 
Humor Recognition and Humor Anchor Extraction
Humor Recognition and Humor Anchor ExtractionHumor Recognition and Humor Anchor Extraction
Humor Recognition and Humor Anchor Extraction
 
星野「調査観察データの統計科学」第3章
星野「調査観察データの統計科学」第3章星野「調査観察データの統計科学」第3章
星野「調査観察データの統計科学」第3章
 
Learning Better Embeddings for Rare Words Using Distributional Representations
Learning Better Embeddings for Rare Words Using Distributional RepresentationsLearning Better Embeddings for Rare Words Using Distributional Representations
Learning Better Embeddings for Rare Words Using Distributional Representations
 
星野「調査観察データの統計科学」第1&2章
星野「調査観察データの統計科学」第1&2章星野「調査観察データの統計科学」第1&2章
星野「調査観察データの統計科学」第1&2章
 
[Yang, Downey and Boyd-Graber 2015] Efficient Methods for Incorporating Knowl...
[Yang, Downey and Boyd-Graber 2015] Efficient Methods for Incorporating Knowl...[Yang, Downey and Boyd-Graber 2015] Efficient Methods for Incorporating Knowl...
[Yang, Downey and Boyd-Graber 2015] Efficient Methods for Incorporating Knowl...
 
A Neural Attention Model for Sentence Summarization [Rush+2015]
A Neural Attention Model for Sentence Summarization [Rush+2015]A Neural Attention Model for Sentence Summarization [Rush+2015]
A Neural Attention Model for Sentence Summarization [Rush+2015]
 
Kubernetes in 30 minutes (2017/03/10)
Kubernetes in 30 minutes (2017/03/10)Kubernetes in 30 minutes (2017/03/10)
Kubernetes in 30 minutes (2017/03/10)
 
"Mix Automatic Sequences"(LATA'13) の紹介
"Mix Automatic Sequences"(LATA'13) の紹介"Mix Automatic Sequences"(LATA'13) の紹介
"Mix Automatic Sequences"(LATA'13) の紹介
 

Ähnlich wie 世界最速の正規表現JITエンジンの実装

R言語による アソシエーション分析-組合せ・事象の規則を解明する-(第5回R勉強会@東京)
R言語による アソシエーション分析-組合せ・事象の規則を解明する-(第5回R勉強会@東京)R言語による アソシエーション分析-組合せ・事象の規則を解明する-(第5回R勉強会@東京)
R言語による アソシエーション分析-組合せ・事象の規則を解明する-(第5回R勉強会@東京)Koichi Hamada
 
ソーシャルウェブ と レコメンデーション -第4回データマイニング+WEB勉強会@東京
ソーシャルウェブ と レコメンデーション -第4回データマイニング+WEB勉強会@東京ソーシャルウェブ と レコメンデーション -第4回データマイニング+WEB勉強会@東京
ソーシャルウェブ と レコメンデーション -第4回データマイニング+WEB勉強会@東京Koichi Hamada
 
ソーシャルデザインパターン -評判と情報収集-
ソーシャルデザインパターン -評判と情報収集-ソーシャルデザインパターン -評判と情報収集-
ソーシャルデザインパターン -評判と情報収集-Koichi Hamada
 
Mahout Canopy Clustering - #TokyoWebmining 9
Mahout Canopy Clustering - #TokyoWebmining 9Mahout Canopy Clustering - #TokyoWebmining 9
Mahout Canopy Clustering - #TokyoWebmining 9Koichi Hamada
 
Mahout JP - #TokyoWebmining 11th #MahoutJP
Mahout JP -  #TokyoWebmining 11th #MahoutJP Mahout JP -  #TokyoWebmining 11th #MahoutJP
Mahout JP - #TokyoWebmining 11th #MahoutJP Koichi Hamada
 
[db tech showcase Tokyo 2014] B22: Hadoop Rush!! HDFSからデータを自在に取得、加工するにはどうする? ...
[db tech showcase Tokyo 2014] B22: Hadoop Rush!! HDFSからデータを自在に取得、加工するにはどうする? ...[db tech showcase Tokyo 2014] B22: Hadoop Rush!! HDFSからデータを自在に取得、加工するにはどうする? ...
[db tech showcase Tokyo 2014] B22: Hadoop Rush!! HDFSからデータを自在に取得、加工するにはどうする? ...Insight Technology, Inc.
 
『モバゲーの大規模データマイニング基盤におけるHadoop活用』-Hadoop Conference Japan 2011- #hcj2011
『モバゲーの大規模データマイニング基盤におけるHadoop活用』-Hadoop Conference Japan 2011- #hcj2011 『モバゲーの大規模データマイニング基盤におけるHadoop活用』-Hadoop Conference Japan 2011- #hcj2011
『モバゲーの大規模データマイニング基盤におけるHadoop活用』-Hadoop Conference Japan 2011- #hcj2011 Koichi Hamada
 
「R言語による Random Forest 徹底入門 -集団学習による分類・予測-」 - #TokyoR #11
「R言語による Random Forest 徹底入門 -集団学習による分類・予測-」 - #TokyoR  #11「R言語による Random Forest 徹底入門 -集団学習による分類・予測-」 - #TokyoR  #11
「R言語による Random Forest 徹底入門 -集団学習による分類・予測-」 - #TokyoR #11Koichi Hamada
 
"Mahout Recommendation" - #TokyoWebmining 14th
"Mahout Recommendation" -  #TokyoWebmining 14th"Mahout Recommendation" -  #TokyoWebmining 14th
"Mahout Recommendation" - #TokyoWebmining 14thKoichi Hamada
 
Large Scale Data Mining of the Mobage Service - #PRMU 2011 #Mahout #Hadoop
Large Scale Data Mining of the Mobage Service - #PRMU 2011 #Mahout #HadoopLarge Scale Data Mining of the Mobage Service - #PRMU 2011 #Mahout #Hadoop
Large Scale Data Mining of the Mobage Service - #PRMU 2011 #Mahout #HadoopKoichi Hamada
 
Asakusa Framework 演算子の処方箋
Asakusa Framework 演算子の処方箋Asakusa Framework 演算子の処方箋
Asakusa Framework 演算子の処方箋hmasa
 
ベイジアンネットとレコメンデーション -第5回データマイニング+WEB勉強会@東京
ベイジアンネットとレコメンデーション -第5回データマイニング+WEB勉強会@東京ベイジアンネットとレコメンデーション -第5回データマイニング+WEB勉強会@東京
ベイジアンネットとレコメンデーション -第5回データマイニング+WEB勉強会@東京Koichi Hamada
 
ビッグデータ&データマネジメント展
ビッグデータ&データマネジメント展ビッグデータ&データマネジメント展
ビッグデータ&データマネジメント展Recruit Technologies
 
SSII2018TS: 大規模深層学習
SSII2018TS: 大規模深層学習SSII2018TS: 大規模深層学習
SSII2018TS: 大規模深層学習SSII
 
Blueprintsについて
BlueprintsについてBlueprintsについて
BlueprintsについてTetsuro Nagae
 
Remineを活かしたプロセス支援 - 失敗しないプロセス支援 -
Remineを活かしたプロセス支援 - 失敗しないプロセス支援 -Remineを活かしたプロセス支援 - 失敗しないプロセス支援 -
Remineを活かしたプロセス支援 - 失敗しないプロセス支援 -Makoto SAKAI
 
「はじめてでもわかる RandomForest 入門-集団学習による分類・予測 -」 -第7回データマイニング+WEB勉強会@東京
「はじめてでもわかる RandomForest 入門-集団学習による分類・予測 -」 -第7回データマイニング+WEB勉強会@東京「はじめてでもわかる RandomForest 入門-集団学習による分類・予測 -」 -第7回データマイニング+WEB勉強会@東京
「はじめてでもわかる RandomForest 入門-集団学習による分類・予測 -」 -第7回データマイニング+WEB勉強会@東京Koichi Hamada
 
Big data解析ビジネス
Big data解析ビジネスBig data解析ビジネス
Big data解析ビジネスMie Mori
 

Ähnlich wie 世界最速の正規表現JITエンジンの実装 (20)

R言語による アソシエーション分析-組合せ・事象の規則を解明する-(第5回R勉強会@東京)
R言語による アソシエーション分析-組合せ・事象の規則を解明する-(第5回R勉強会@東京)R言語による アソシエーション分析-組合せ・事象の規則を解明する-(第5回R勉強会@東京)
R言語による アソシエーション分析-組合せ・事象の規則を解明する-(第5回R勉強会@東京)
 
ソーシャルウェブ と レコメンデーション -第4回データマイニング+WEB勉強会@東京
ソーシャルウェブ と レコメンデーション -第4回データマイニング+WEB勉強会@東京ソーシャルウェブ と レコメンデーション -第4回データマイニング+WEB勉強会@東京
ソーシャルウェブ と レコメンデーション -第4回データマイニング+WEB勉強会@東京
 
ソーシャルデザインパターン -評判と情報収集-
ソーシャルデザインパターン -評判と情報収集-ソーシャルデザインパターン -評判と情報収集-
ソーシャルデザインパターン -評判と情報収集-
 
Mahout Canopy Clustering - #TokyoWebmining 9
Mahout Canopy Clustering - #TokyoWebmining 9Mahout Canopy Clustering - #TokyoWebmining 9
Mahout Canopy Clustering - #TokyoWebmining 9
 
Mahout JP - #TokyoWebmining 11th #MahoutJP
Mahout JP -  #TokyoWebmining 11th #MahoutJP Mahout JP -  #TokyoWebmining 11th #MahoutJP
Mahout JP - #TokyoWebmining 11th #MahoutJP
 
[db tech showcase Tokyo 2014] B22: Hadoop Rush!! HDFSからデータを自在に取得、加工するにはどうする? ...
[db tech showcase Tokyo 2014] B22: Hadoop Rush!! HDFSからデータを自在に取得、加工するにはどうする? ...[db tech showcase Tokyo 2014] B22: Hadoop Rush!! HDFSからデータを自在に取得、加工するにはどうする? ...
[db tech showcase Tokyo 2014] B22: Hadoop Rush!! HDFSからデータを自在に取得、加工するにはどうする? ...
 
『モバゲーの大規模データマイニング基盤におけるHadoop活用』-Hadoop Conference Japan 2011- #hcj2011
『モバゲーの大規模データマイニング基盤におけるHadoop活用』-Hadoop Conference Japan 2011- #hcj2011 『モバゲーの大規模データマイニング基盤におけるHadoop活用』-Hadoop Conference Japan 2011- #hcj2011
『モバゲーの大規模データマイニング基盤におけるHadoop活用』-Hadoop Conference Japan 2011- #hcj2011
 
「R言語による Random Forest 徹底入門 -集団学習による分類・予測-」 - #TokyoR #11
「R言語による Random Forest 徹底入門 -集団学習による分類・予測-」 - #TokyoR  #11「R言語による Random Forest 徹底入門 -集団学習による分類・予測-」 - #TokyoR  #11
「R言語による Random Forest 徹底入門 -集団学習による分類・予測-」 - #TokyoR #11
 
"Mahout Recommendation" - #TokyoWebmining 14th
"Mahout Recommendation" -  #TokyoWebmining 14th"Mahout Recommendation" -  #TokyoWebmining 14th
"Mahout Recommendation" - #TokyoWebmining 14th
 
MVSR Schedulerを作るための指針
MVSR Schedulerを作るための指針MVSR Schedulerを作るための指針
MVSR Schedulerを作るための指針
 
Large Scale Data Mining of the Mobage Service - #PRMU 2011 #Mahout #Hadoop
Large Scale Data Mining of the Mobage Service - #PRMU 2011 #Mahout #HadoopLarge Scale Data Mining of the Mobage Service - #PRMU 2011 #Mahout #Hadoop
Large Scale Data Mining of the Mobage Service - #PRMU 2011 #Mahout #Hadoop
 
Asakusa Framework 演算子の処方箋
Asakusa Framework 演算子の処方箋Asakusa Framework 演算子の処方箋
Asakusa Framework 演算子の処方箋
 
ベイジアンネットとレコメンデーション -第5回データマイニング+WEB勉強会@東京
ベイジアンネットとレコメンデーション -第5回データマイニング+WEB勉強会@東京ベイジアンネットとレコメンデーション -第5回データマイニング+WEB勉強会@東京
ベイジアンネットとレコメンデーション -第5回データマイニング+WEB勉強会@東京
 
ビッグデータ&データマネジメント展
ビッグデータ&データマネジメント展ビッグデータ&データマネジメント展
ビッグデータ&データマネジメント展
 
SSII2018TS: 大規模深層学習
SSII2018TS: 大規模深層学習SSII2018TS: 大規模深層学習
SSII2018TS: 大規模深層学習
 
Blueprintsについて
BlueprintsについてBlueprintsについて
Blueprintsについて
 
Remineを活かしたプロセス支援 - 失敗しないプロセス支援 -
Remineを活かしたプロセス支援 - 失敗しないプロセス支援 -Remineを活かしたプロセス支援 - 失敗しないプロセス支援 -
Remineを活かしたプロセス支援 - 失敗しないプロセス支援 -
 
「はじめてでもわかる RandomForest 入門-集団学習による分類・予測 -」 -第7回データマイニング+WEB勉強会@東京
「はじめてでもわかる RandomForest 入門-集団学習による分類・予測 -」 -第7回データマイニング+WEB勉強会@東京「はじめてでもわかる RandomForest 入門-集団学習による分類・予測 -」 -第7回データマイニング+WEB勉強会@東京
「はじめてでもわかる RandomForest 入門-集団学習による分類・予測 -」 -第7回データマイニング+WEB勉強会@東京
 
Apache spark 2.3 and beyond
Apache spark 2.3 and beyondApache spark 2.3 and beyond
Apache spark 2.3 and beyond
 
Big data解析ビジネス
Big data解析ビジネスBig data解析ビジネス
Big data解析ビジネス
 

Mehr von Ryoma Sin'ya

形式言語理論への 測度論的アプローチ
形式言語理論への 測度論的アプローチ形式言語理論への 測度論的アプローチ
形式言語理論への 測度論的アプローチRyoma Sin'ya
 
有限モデル理論入門:MSOとオートマトン
有限モデル理論入門:MSOとオートマトン有限モデル理論入門:MSOとオートマトン
有限モデル理論入門:MSOとオートマトンRyoma Sin'ya
 
統語的曖昧性・普遍性判定問題の決定可能性
統語的曖昧性・普遍性判定問題の決定可能性統語的曖昧性・普遍性判定問題の決定可能性
統語的曖昧性・普遍性判定問題の決定可能性Ryoma Sin'ya
 
正規表現に潜む対称性 〜等式公理による等価性判定〜
正規表現に潜む対称性 〜等式公理による等価性判定〜正規表現に潜む対称性 〜等式公理による等価性判定〜
正規表現に潜む対称性 〜等式公理による等価性判定〜Ryoma Sin'ya
 
A new technique for proving non regularity based on the measure of a language
A new technique for proving non regularity based on the measure of a languageA new technique for proving non regularity based on the measure of a language
A new technique for proving non regularity based on the measure of a languageRyoma Sin'ya
 
正規表現入門 星の高さを求めて
正規表現入門 星の高さを求めて正規表現入門 星の高さを求めて
正規表現入門 星の高さを求めてRyoma Sin'ya
 
正規表現++
正規表現++正規表現++
正規表現++Ryoma Sin'ya
 
AVX2時代の正規表現マッチング 〜半群でぐんぐん!〜
AVX2時代の正規表現マッチング 〜半群でぐんぐん!〜AVX2時代の正規表現マッチング 〜半群でぐんぐん!〜
AVX2時代の正規表現マッチング 〜半群でぐんぐん!〜Ryoma Sin'ya
 
並列化と実行時コード生成を用いた正規表現マッチングの高速化
並列化と実行時コード生成を用いた正規表現マッチングの高速化並列化と実行時コード生成を用いた正規表現マッチングの高速化
並列化と実行時コード生成を用いた正規表現マッチングの高速化Ryoma Sin'ya
 

Mehr von Ryoma Sin'ya (9)

形式言語理論への 測度論的アプローチ
形式言語理論への 測度論的アプローチ形式言語理論への 測度論的アプローチ
形式言語理論への 測度論的アプローチ
 
有限モデル理論入門:MSOとオートマトン
有限モデル理論入門:MSOとオートマトン有限モデル理論入門:MSOとオートマトン
有限モデル理論入門:MSOとオートマトン
 
統語的曖昧性・普遍性判定問題の決定可能性
統語的曖昧性・普遍性判定問題の決定可能性統語的曖昧性・普遍性判定問題の決定可能性
統語的曖昧性・普遍性判定問題の決定可能性
 
正規表現に潜む対称性 〜等式公理による等価性判定〜
正規表現に潜む対称性 〜等式公理による等価性判定〜正規表現に潜む対称性 〜等式公理による等価性判定〜
正規表現に潜む対称性 〜等式公理による等価性判定〜
 
A new technique for proving non regularity based on the measure of a language
A new technique for proving non regularity based on the measure of a languageA new technique for proving non regularity based on the measure of a language
A new technique for proving non regularity based on the measure of a language
 
正規表現入門 星の高さを求めて
正規表現入門 星の高さを求めて正規表現入門 星の高さを求めて
正規表現入門 星の高さを求めて
 
正規表現++
正規表現++正規表現++
正規表現++
 
AVX2時代の正規表現マッチング 〜半群でぐんぐん!〜
AVX2時代の正規表現マッチング 〜半群でぐんぐん!〜AVX2時代の正規表現マッチング 〜半群でぐんぐん!〜
AVX2時代の正規表現マッチング 〜半群でぐんぐん!〜
 
並列化と実行時コード生成を用いた正規表現マッチングの高速化
並列化と実行時コード生成を用いた正規表現マッチングの高速化並列化と実行時コード生成を用いた正規表現マッチングの高速化
並列化と実行時コード生成を用いた正規表現マッチングの高速化
 

世界最速の正規表現JITエンジンの実装

  • 1. 世界最速の正規表現 JITエンジンの実装 Ryoma Sin’ya (@sinya8282) サイボウズ・ラボユース最終成果報告会 2012/3/26 at 秋葉原ダイビル Monday, March 26, 12
  • 2. 皆さん 正規表現は お好きですか? Monday, March 26, 12
  • 3. 僕は正規表現が 好きじゃありません Monday, March 26, 12
  • 4. 僕は正規表現が 好きじゃありません 愛してます Monday, March 26, 12
  • 5. % whoami • 新屋 良磨 (@sinya8282) • 東京工業大学修士一年 • 一期生では最年長 • 精神は林君が最年長説 • 好きな表現は正規表現 • 好きな言語は正規言語 • 好きな曲は Monday, March 26, 12
  • 6. % whoami • 新屋 良磨 (@sinya8282) • 東京工業大学修士一年 • 一期生では最年長 • 精神は林君が最年長説 • 好きな表現は正規表現 • 好きな言語は正規言語 • 好きな曲は • Regular Expression (by Broken Drum) Monday, March 26, 12
  • 7. サイボウズ・ラボユース ではなにを? • 正規表現エンジンの実装, 高速化 • DFAをJITして高速化 (実行時コード生成) • オートマトンのデータ並列実行による高速化 • 正規表現を利用したツール/システムの開発 • テキスト検索(grep) • 正規表現変換ツール • 正規表現の拡張演算子等 • エンジンはgithubで公開 → Regen(レーゲン) Monday, March 26, 12
  • 8. なぜ正規表現エンジン? • 正規表現の歴史は古い。種類(亜種)も多い I define UNIX as “30 definitions of regular expressions living under one roof.” — Don Knuth • 実装も多い(本当に多い) • GNU grep, Google RE2, 鬼車, PCRE, TRE,,,, • 車輪の再発明? Monday, March 26, 12
  • 9. なぜ正規表現エンジン? • 正規表現の歴史は古い。種類(亜種)も多い I define UNIX as “30 definitions of regular expressions living under one roof.” — Don Knuth • 実装も多い(本当に多い) • GNU grep, Google RE2, 鬼車, PCRE, TRE,,,, • 車輪の再発明? そうだね。ただし最速の車輪だ。— Ryoma Sin’ya Monday, March 26, 12
  • 10. なにが最速? • 「正規表現マッチング」が最速 • 「DFAの状態遷移」が最速 (Not文字列探索) • DFAをJITすることで状態遷移を高速化 • データ並列マッチングをサポート • なにと比較して? • GoogleRE2, GNU grep, cgrep 等のDFAベースエン ジンと比較して高速(RE2の6~10倍) Monday, March 26, 12
  • 11. なにが最速? • 「正規表現マッチング」が最速 • 「DFAの状態遷移」が最速 (Not文字列探索) • DFAをJITすることで状態遷移を高速化 • データ並列マッチングをサポート • なにと比較して? • GoogleRE2, GNU grep, cgrep 等のDFAベースエン ジンと比較して高速(RE2の6~10倍) 詳細はポスターにも!! Monday, March 26, 12
  • 12. 並列化と実行時コード生成を用いた 正規表現エンジン「Regen」 : 正規表現マッチングの高速化 &そのツール群の紹介 新屋 良磨 † 光成 滋生 †† 佐々 政孝 † Regen でサポートしてる正規表現の拡張演算子, 及びツール群を紹介する. † 東京工業大学 †† サイボウズ・ラボ株式会社 課題や機能についてなど, 多くの意見が聞きたい. 我々は並列化と実行時コード生成を用いた高速な正規表現エンジン Regen を開発した. 拡張演算子 Regen における設計方針や特長を紹介し, 既存実装との違いを説明する. ✦ 積集合 ✦ 弱後方参照 Regenのマッチング内部動作 • /R1 &R2 /→ R1とR2両方にマッチ •PCRE等で使える後方参照の制限版 ✦ 対称差 •有限パターンの参照なら区別できる. •/R1&&R2/→R1かR 一方のみにマッチ •/(1|2|30?) = (1)/ → 恒等式 [01] 1 0 1 NFA DFA •無限パターン(繰り返し)は区別しない. 2 1 変換 1 ✦ 補集合 •/!(R1)/→R1 にマッチしない列にマッチ •/(1|2+) = (1)/ →/1 = 1|2+ = 2 + / q0 q1 q0 q1 0 0 パース&変換 JIT (Χbyak) 正規表現 変換 変換 ✦ 逆順 ✦ 上限付き再帰 /(0 ⇤ 1) + / 0 •/ ⇠ (R1)/→R1のマッチ文字列の逆文字列 •PCRE等で使える再帰(?R)の制限版 •/a@b@c/→“aabcbabcc” 1 文字列に対して ✦ 置換, シャッフル, 非強欲な繰り返し... •紹介してる演算全てDFAで実現 •/(@{0, 2})/→ “()”, “(())”, “((()))” q1 1 0 0 q2 JIT マッチング開始 1 (Χbyak) 入力: 正規表現&文字列 q0 SSFA (並列実行可能なDFA) 正規表現から受理文字列出力 正規表現からDFA(図)出力 1 Regen内部のコード生成(JIT)部抜粋 コード生成(JIT)による性能向上 Example: 論理式を充足する解を全列挙 q7 0 2 Google RE2 Regen Regen JIT (x1 _ x2 _ x3 ) ^ (x1 _ x2 _ x3 ) 1 3 q9 0 q12 q4 3GB/sec 3 Fast 2 2 Throughput 2.5GB/sec 2 3 2GB/sec 3 q10 0 q13 1 1.5GB/sec 0 q1 1 3 q15 0 1GB/sec q0 1 0 q5 1 Slow q2 q14 0.5GB/sec 2 3 正規表現で 2 2 3 0GB/sec 3 最適化が効かないパターン 最適化が効くパターン SATを解く! q6 C++ JIT Library /(([02468][13579]){5})*/ /(0123456789)*/ q3 2 q11 1 Χbyak 0 q8 0 並列マッチングによる性能向上 並列化のオーバーヘッド 1 正規表現: /([0-4]{5}[5-9]{5})*/, 入力: 1GB 正規表現: /(([02468][13579]){5})*/, 入力: 100KB~1000KB 実装済みツール群 今後の課題 [GB/sec] ✦ 正規表現Lib: Regen ✦ 他アーキテクチャ対応 • • 今はX86-64のみ(Χbyak) 20 Slow ベンチマークA ベンチマークB 2.40 msec 8,000K Google RE2 を参考 • • LLVM? (抽象化で性能落ちない?) Fast Google RE2 0.263 0.264 17.5 7,200K Clock Cycle Submatch 未対応 Regen O0 0.449 0.448 1.92 msec Throughput 15 6,400K Regen O3 1.521 2.761 5,600K ✦ 正規表現変換系: recon ✦ Submatch(キャプチャ)の対応 • • 現在でもマッチした文字列全体の取得は可能. 12.5 1.44 msec 4,800K 10 正規表現 to 正規表現 • • マッチした文字列の部分的な取得は未対応 4,000K 0.96 msec Fast 正規表現 to DFA(図) 7.5 3,200K • 2,400K 正規表現 to 受理文字列 ✦ 性能を生かしたツール/システムの考案 5 0.48 msec 1,600K 2.5 Slow 800K grep: regengrep ✦ • 0 0K [KB] JIT版は高速. 100 200 300 400 500 600 700 800 900 1000 1 2 3 4 5 6 • Input size Number of Threads Regen Regen JIT Read only 1スレッド 1スレッドJIT 2スレッド 2スレッドJIT まだ開発中(速度,機能) Thursday, January 5, 12 Thursday, January 5, 12 1 2 3 4 5 6 gen 0.449 0.897 1.327 1.759 2.236 2.681 Monday, March 26, 12 gen JIT 2.321 4.550 6.917 9.167 11.27 Text 13.59 ad 6.041 12.11 16.60 18.37 18.89 19.17
  • 13. 実装の詳細は色々なとこで • 「並列化と実行時コード生成を用いた正規表現 マッチングの高速化」 • 日本ソフトウェア科学会第28回大会 (書き直し中) • 第53回プログラミング・シンポジウム - 予稿, ポスター • 「正規表現とJITと並列化とベンチマーク」 • x86/x64最適化勉強会1 - スライド • 「正規表現の限界」 • Shibuya.pm ~夏の正規表現祭り~ - スライド Monday, March 26, 12
  • 14. 実装の詳細は色々なとこで • 「並列化と実行時コード生成を用いた正規表現 マッチングの高速化」 • 日本ソフトウェア科学会第28回大会 (書き直し中) • 第53回プログラミング・シンポジウム - 予稿, ポスター • 「正規表現とJITと並列化とベンチマーク」 • x86/x64最適化勉強会1 - スライド • 「正規表現の限界」 • Shibuya.pm ~夏の正規表現祭り~ - スライド じゃあ今日はなにを喋る? Monday, March 26, 12
  • 15. オリジナルな成果 • DFA-JITによる正規表現マッチングの高速化 • JIT特有の最適化等 • データ並列マッチングによる高速化 • オートマトンを拡張 • 正規表現の拡張演算の提案/実装 • 弱後方参照, 上限付き再帰, 非強欲繰り返し(DFAver) Monday, March 26, 12
  • 16. オリジナルな成果 • DFA-JITによる正規表現マッチングの高速化 • JIT特有の最適化等 • データ並列マッチングによる高速化 • オートマトンを拡張 • 正規表現の拡張演算の提案/実装 • 弱後方参照, 上限付き再帰, 非強欲繰り返し(DFAver) 全部喋りたい... Monday, March 26, 12
  • 17. 正規表現エンジン 開発過程を時系列で Monday, March 26, 12
  • 18. 正規表現エンジン 開発過程を時系列で 2011年 3月 4 5 6 7 8 9 10 11 12 Monday, March 26, 12
  • 19. 上京。 正規表現エンジン この時、正規表現(DFA)をJIT 開発過程を時系列で する方法で悩んでいた。 (自前, gcc, asm, llvm, libjit, gnu lightning...) 2011年 3月 4 5 6 7 8 9 10 11 12 Monday, March 26, 12
  • 20. ラボユース採択(神タイミング)。 正規表現エンジン 開発過程を時系列で 2011年 3月 4 5 6 7 8 9 10 11 12 Monday, March 26, 12
  • 21. C++製JITライブラリXbyakで 正規表現エンジン 正規表現JIT。動いた。 開発過程を時系列で ・X86最適化の権化、光成さんの  熱血指導の賜物? 2011年 3月 4 5 6 7 8 9 10 11 12 Monday, March 26, 12
  • 22. DFA-JIT C++製JITライブラリXbyakで 正規表現エンジン 正規表現JIT。動いた。 開発過程を時系列で ・X86最適化の権化、光成さんの  熱血指導の賜物? 2011年 3月 4 5 6 7 8 9 10 11 12 Monday, March 26, 12
  • 23. DFA-JIT エントリー (レジスタ調整,初期状態へジャンプ) 状態コード詳細 (24 Byte) C++製JITライブラリXbyakで 状態0のコー 正規表現エンジン 正規表現JIT。動いた。 状態1のコー cmp rdi,rsi #終端判定 je 0x120005030 開発過程を時系列で movzx r10,BYTE PTR [rdi] ・X86最適化の権化、光成さんの inc rdi 状態遷移テーブル  熱血指導の賜物?jmp QWORD PTR [rdx +r10*8] •コード生成は JIT ライブラリ Χbyak を使用. 2011年 3月 •4 5 サイボウズ・ラボ 光成氏が開発.12 Χbyak: 6 7 8 9 10 11 Monday, March 26, 12
  • 24. C++製JITライブラリXbyakで 正規表現エンジン 正規表現JIT。動いた。 開発過程を時系列で ・X86最適化の権化、光成さんの  熱血指導の賜物? 2011年 3月 4 5 6 7 8 9 10 11 12 Monday, March 26, 12
  • 25. 正規表現のデータ並列マッチン 正規表現エンジン グを実装。(オートマトンを拡張) 開発過程を時系列で ・巨大なテキストの全体マッチング  では台数効果が見込める。     (詳細はポスターで) 2011年 3月 4 5 6 7 8 9 10 11 12 Monday, March 26, 12
  • 26. データ並列マッチング 正規表現のデータ並列マッチン 正規表現エンジン グを実装。(オートマトンを拡張) 開発過程を時系列で ・巨大なテキストの全体マッチング  では台数効果が見込める。     (詳細はポスターで) 2011年 3月 4 5 6 7 8 9 10 11 12 Monday, March 26, 12
  • 27. データ並列マッチング マッチングの並列化 = 状態遷移の並列化 a q1 b q3 a q1 a q2 正規表現のデータ並列マッチン q0 正規表現エンジン グを実装。(オートマトンを拡張) •このような状態遷移を 開発過程を時系列で ・巨大なテキストの全体マッチング a a ? b 結果1 a  では台数効果が見込める。 ?     (詳細はポスターで) q2 ? ? 結果2 2011年 •のように文字単位で並列に実行 3月 4 5 6 7 8 9 10 11 12 Monday, March 26, 12
  • 28. 正規表現のデータ並列マッチン 正規表現エンジン グを実装。(オートマトンを拡張) 開発過程を時系列で ・巨大なテキストの全体マッチング  では台数効果が見込める。     (詳細はポスターで) 2011年 3月 4 5 6 7 8 9 10 11 12 Monday, March 26, 12
  • 29. 最適化、議論、実装、 正規表現エンジン イベント、論文、学会....。 開発過程を時系列で ・Shibuya.pm「夏の正規表現祭り」(thanks! 竹迫さん) ・x86/x64最適化勉強会1 (thanks! 光成さん) ・日本ソフトウェア科学会第28会大会@沖縄 2011年 3月 4 5 6 7 8 9 10 11 12 Monday, March 26, 12
  • 30. 最適化、議論、実装、 正規表現エンジン イベント、論文、学会....。 ・夏休み(学生)ということで、週3で 開発過程を時系列で ・Shibuya.pm「夏の正規表現祭り」(thanks! 竹迫さん)  サイボウズ・ラボに出勤。開発。 ・x86/x64最適化勉強会1 (thanks! 光成さん) ・ラボメンバーさんとの議論が楽しい!!! ・日本ソフトウェア科学会第28会大会@沖縄 ・最適化/並列化/新機能等々,,, 色々 る。 2011年 3月 4 5 6 7 8 9 10 11 12 Monday, March 26, 12
  • 31. ひたすら正規表現 正規表現エンジン と戯れる。 開発過程を時系列で 2011年 3月 4 5 6 7 8 9 10 11 12 Monday, March 26, 12
  • 32. ひたすら正規表現 正規表現エンジン と戯れる。 開発過程を時系列で ・正規表現の新しい演算を考える等(ポスター) 2011年 3月 4 5 6 7 8 9 10 11 12 Monday, March 26, 12
  • 33. ✦ 弱後方参照 •有限パターンの参照なら区別できる. ひたすら正規表現 •/(1|2|30?) = (1)/ → 恒等式 正規表現エンジン •無限パターン(繰り返し)は区別しない. と戯れる。 = 2 + / 開発過程を時系列で •/(1|2+) = (1)/ →/1 = 1|2+ ・正規表現の新しい演算を考える等(ポスター) ✦ 上限付き再帰 •/a@b@c/→“aabcbabcc” 2011年 •/(@{0, 2})/7→ “()”, 9 10 “((()))” 3月 4 5 6 8 “(())”, 11 12 Monday, March 26, 12
  • 34. ひたすら正規表現 正規表現エンジン と戯れる。 開発過程を時系列で ・正規表現の新しい演算を考える等(ポスター) 2011年 3月 4 5 6 7 8 9 10 11 12 Monday, March 26, 12
  • 35. 2012年 1月 2 3 Monday, March 26, 12
  • 36. ポスター発表。 ・第53回プログラミング・シンポジウム  「並列化と実行時コード生成を用いた   正規表現マッチングの高速化」  → 入り口にあるポスターです。 2012年 1月 2 3 Monday, March 26, 12
  • 37. grepの実装。 ・grep高速化のための機能追加 ・固定文字列探索の高速化等(未完成) ・ライブラリAPIを整理し始める(ようやく) 2012年 1月 2 3 Monday, March 26, 12
  • 38. なう。 2012年 1月 2 3 Monday, March 26, 12
  • 39. 正規表現エンジン Regen githubで開発中!! http://github.com/sinya8282/regen 2012年 1月 2 3 Monday, March 26, 12
  • 40. 正規表現エンジン Regen githubで開発中!! http://github.com/sinya8282/regen 2012年 1月 2 3 そして伝説へ.... Monday, March 26, 12
  • 41. サイボウズ・ラボユース ではなにを?(再) • 正規表現エンジンの実装, 高速化 Regen • 「最速の車輪を。」→ • 正規表現を利用したツール/システムの開発 Monday, March 26, 12
  • 42. サイボウズ・ラボユース ではなにを?(再) • 正規表現エンジンの実装, 高速化 Regen • 「最速の車輪を。」→ • 正規表現を利用したツール/システムの開発 そしてこれからは? • 欠点も多い(実装で克服できる?) • メモリ使用量, 制限(キャプチャ,,,), 苦手な正規表現,,, • ライブラリを完成させにゃ... (目標: Google RE2) • 「文字列探索」以外にも正規表現を。(試行錯誤中) Monday, March 26, 12