あるデーターファイルから、条件に合うデータを削除してファイルサイズを小さくするpythonスクリプトを作ったのですが、データがギガバイトぐらいになるととても時間がかかるようになります。
データファイルを分割してみたのですが、それでも時間がかかります。
pythonでループ処理をするとかなり時間がかかってしまうようなのです。
それで、調べると、javascriptだと速いらしい、のでネットで調べてjavascriptに書き換えてみたのですが、やっぱり時間がかかるので、C#にトライしてみました。
アルゴリズム自体はシンプルなのでpythonでも特別なモジュールは使ってないので難しくはないだろうと思いました。
そこで、今回はベクターのソフトライブラリでC#関連の便利ツールを探してみました。それらのおかげで、割と間単に移植してexe化できることができました。
まず、C# script batch 1.00というフリーソフトです。
このソフトは、C#の環境を構築しなくても、スクリプトのようにC#言語を実行できるのです。
拡張子csのファイルを作って、pythonを実行する感覚で実行できとても便利です。書いていておかしくなったらコメントアウトして実行させておかしなところを見つけることができます。
C#に関しては、ネットで検索してサンプルを見つけそれを応用していきます。
これで、実行できるcsファイルを完成することができます。
次の便利ツールは、C#コンパイルアシストbeta版です。
自作のcsファイルを指定して、コンパイルボタンをクリックするとexeファイルが出来上がります。
できたプログラムを実行してみましたが、やはりpythonより速いです。
ただ、8億個ぐらいのデーターなので、20くらいに分割して処理してるのですが、pythonよりも、速くなっても全然終わりません。
スーパーコンピューターを使うか、gpuで処理するプログラムにしないと速くできないのかもしれません。