| 個人サイト |
| Preferred Infrastructure |
ついでに自分でもdna2rnaを作りたくなったので、コンテスト後にC++で書いていました。DNAの管理にsubstrやconcatが高速なデータ構造を使う必要があって、それをC++ではropeというライブラリで出来るのですが、これを一度試して見たかったというのもあります。Opteron 2.4GHzのマシンでendo.dnaからRNAを生成するのに約6.8秒です。
dna2rna.cpp
ropeのsubstrとconcatは速いとは言え、やはりある程度時間がかかるので、例えば一文字単位の連結は一旦string上でやって、それを後で一気にropeに足しこむといったことをするとさらに速くなります。あとropeのiteratorをpとすると、
c=*p++よりも
c=*p; ++pの方が速かったり。この辺はライブラリの実装依存ですが。