• [Project T]blastの検索がようやく終わった。
  • [Project T]もう一つの検索の方が、どこで詰まっているのか調べてみると、やはり正規表現検索の周辺らしい。DNA配列の正規表現検索にかかる時間を計測してみると、配列が長くなると極端に遅くなる。うーん、やはりPerl正規表現検索エンジンがどのように動いているかをちゃんと知っておかないと駄目か、と思いオライリーの『詳説正規表現』をめくってみる。いろいろと調べていくと、どうもパターンマッチ時の特殊変数”$&”を使っているのが激遅になっている原因ではないかという疑いが出て来た。というわけで$&を排除してかわりに$1...を使うようにちょこっとスクリプトを書き直して動かしてみると……、速! 短い配列についてはそれほど変わらない気がするが、中ぐらいの長さ(5 M base pairくらい)で以前56秒かかっていたのが4秒に、長い配列(26 Mbくらい)では1359秒だったのがなんと19秒、87 Mbの長大な配列でも90秒、100 Mbでも108秒で終わっている。つまり、理屈通り、ほぼ長さに比例した時間で終わっている。いったいいままでの計算時間は何だったんだ! と叫びたくなる。”$&”を使うと時間がかかる理屈については、『詳説正規表現』のPerlの章にちゃんと書いてあったが、この本、全体を通して読んではいなかったので見落としていた。(あるいは読んだかもしれないが忘れていた。)まあ一つ勉強にはなった。

詳説 正規表現 第2版

詳説 正規表現 第2版