Python使っている人には当たり前なのかもしれないけど、なんか実行を高速化してくれるツールがあるらしい。Psycoがそれです。とりあえず、ダウンロードでインストール。windows用のバイナリがあったので、バージョン1.5を選択。psyco-1.5.win32-py2.4.exe
仕組みは少しこれから詳しくなる必要がありそうだけど、使い方は簡単。 import psyco psyco.full() と、スクリプトの冒頭に入れるだけ。 Cと同じくらい速いとか、実行速度が10倍になるとか書いてるので、ネットワークの中心性(centrality)を計算するnetworkx.centrality.betweenness_centrality( Graph )を使ってプログラムの実行速度を調べてみました。使ったマシンは、PentiumD 3.2GHz(2G RAM) WindowsXPsp2 XPだと、Microsoftが出しているResource Kitに含まれるtimeitというツールを使える。Windows Server 2003 Resource Kit Tools C:\Program Files\Windows Resource Kits\ToolsにPATHを通すの忘れずに。 node数5897、edge数15950のネットワークのBetweennessによるCentralityを求める。確かに速度が2倍くらいに。 とりあえず、時間がかかる計算をするときは試してみる価値あるね。ループがないと意味は薄いようだけど。たとえば、巨大なリストからのランダムサンプリングとかは、ダメな模様。 以下は参考までに、timeitの出力結果。 psyco適用前 Version Number: Windows NT 5.1 (Build 2600) Exit Time: 8:05 pm, Monday, October 16 2006 Elapsed Time: 0:09:15.562 Process Time: 0:09:12.031 System Calls: 1228887 Context Switches: 256903 Page Faults: 815529 Bytes Read: 105270080 Bytes Written: 11654265 Bytes Other: 3072382 psyco適用後 Version Number: Windows NT 5.1 (Build 2600) Exit Time: 8:15 pm, Monday, October 16 2006 Elapsed Time: 0:05:33.968 Process Time: 0:05:33.062 System Calls: 2064202 Context Switches: 465510 Page Faults: 1811956 Bytes Read: 6464132 Bytes Written: 808205 Bytes Other: 1981950 しかし、Psycoって何の略なんだ? スポンサーサイト
|
|
| ホーム |
|