週に一回は書きますよ 月に4つ記事を書けばノルマは満たされます。
上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

前回さらしたソースコード、ところどころ正則評価をしてみたのが残っていました。それらを除いてprofilingしてみましたが、結果は変わりませんでした。

重い箇所はmatch, replaceとのことですが、具体的にどの処理が重いのかはよくわかりません。プロファイリングの粒度を細かくすることによって原因を突き止めます。

ghcのプロファイラでは、{-# SCC "hoge" #-}というコメントを入れることによって任意の箇所での計算時間を測ることができます。これを利用。match, replaceをpattern, templateの種類ごとに分割してプロファイリングしてみます。

結果は圧縮して続きに貼りました。 プロファイルの結果、matchRやreplaceBaseが重いことがわかってきました。matchRはDNAの分割を伴うので、重いことはわかっています。一方replaceBaseは非常に軽い処理ですが、呼ばれる回数が非常に多いので全体で時間がかかっています。また、match, replaceそのものもまだ結構時間がかかっています。

次回はこのコードを速くしてみます。できれば。

           Dna2rna.exe +RTS -K67108864 -p -RTS

        total time  =      174.35 secs   (3487 ticks @ 50 ms)
        total alloc = 51,048,903,432 bytes  (excludes profiling overheads)

COST CENTRE       %time %alloc

matchR             15.9    9.1
consumeTemplate    14.8   24.8
replacer           13.1   13.0
consumeNat         11.7   16.1
matcher             9.7    6.8
replaceBase         9.4   10.6
consumePattern      6.4    7.3
searchSequence      4.1    4.1
replaceProtect      3.4    2.0
executeOnceIO       2.4    0.9
main                1.5    2.0
quoteDNA            1.1    1.1
outputRNA           1.1    0.3
debugPrintTag       1.1    0.1

                                      individual    inherited
COST CENTRE                 entries  %time %alloc   %time %alloc

MAIN                               0   0.0    0.0   100.0  100.0
 CAF                               7   0.0    0.0   100.0  100.0
  main                             1   1.5    2.0   100.0  100.0
   executeIO                       1   0.9    0.2    98.5   98.0
    executeOnceIO            1891886   2.4    0.9    96.9   97.7
     matchReplace            1891886   0.1    0.0    59.0   47.6
      replacer               1552573  13.1   13.0    27.7   27.0
       replaceAsNat           137776   0.2    0.1     0.5    0.4
        asNatDNA              137776   0.3    0.3     0.3    0.3
       replaceBase          57382383   9.4   10.6     9.4   10.6
       replaceProtect        2326892   3.4    2.0     4.6    3.1
        protector            2507144   0.1    0.0     1.2    1.2
         quoteDNA             180252   1.1    1.1     1.1    1.1
      matcher                1891886   9.7    6.8    31.2   20.6
       matchSearch            187608   0.0    0.0     4.1    4.1
        searchSequence        187608   4.1    4.1     4.1    4.1
       matchBase              606147   0.7    0.0     0.7    0.0
       matchR                2192755  15.9    9.1    15.9    9.1
       matchL                2532068   0.0    0.1     0.0    0.1
       matchSkip             3788862   0.8    0.5     0.8    0.5
     cerrTemplate            1891886   0.0    0.0     0.5    0.1
      debugPrintTag          1891886   0.3    0.0     0.5    0.1
       debugStr              1891886   0.1    0.0     0.1    0.0
       debugPrint            1891886   0.1    0.0     0.1    0.0
     consumeTemplate         1891886  14.8   24.8    15.9   26.2
      consumeNat             5470186   1.1    1.5     1.1    1.5
     cerrPattern             1891886   0.0    0.0     0.6    0.1
      debugPrintTag          1891886   0.3    0.0     0.6    0.1
       debugStr              1891886   0.1    0.0     0.1    0.0
       debugPrint            1891886   0.2    0.0     0.2    0.0
     consumePattern          1891886   6.4    7.3    17.3   22.3
      consumeConst            187608   0.1    0.1     0.1    0.1
      sequence2list          2419600   0.2    0.3     0.2    0.3
      consumeNat             3788862  10.5   14.7    10.5   14.7
     outputRNA               4086222   1.1    0.3     1.1    0.3
     cerrDNA                 1891886   0.1    0.0     0.1    0.0
    debugPrintTag            1891886   0.5    0.1     0.7    0.1
     debugStr                1891886   0.1    0.0     0.1    0.0
     debugPrint              1891886   0.1    0.0     0.1    0.0
 CAF                               5   0.0    0.0     0.0    0.0
スポンサーサイト
コメント
この記事へのコメント
コメントを投稿する
URL:
Comment:
Pass:
秘密: 管理者にだけ表示を許可する
 
トラックバック
この記事のトラックバックURL
http://gusmachine.blog49.fc2.com/tb.php/208-3d108a2c
この記事にトラックバックする(FC2ブログユーザー)
この記事へのトラックバック
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。