Pages

June 18, 2012

PyGooglePlusをプロファイリングしてみた

現在noseでテストコードを書いてるのだけれど、ついでにどこが足を引っ張っているのか知るためにnose経由でプロファイリングしてみた。

準備
  • Graphizをインストール
  • $ pip install https://guppy-pe.svn.sourceforge.net/svnroot/guppy-pe/trunk/guppy
  • $ pip install pbp.scripts

テストコードをtests.pyとして書いたら
$ nosetests --with-profile --profile-stats-file nose.prof tests.py
$ hotshot2dot nose.prof| dot -Tpng -o profile.png
を実行して出力した画像とにらめっこ

今回はApiHandler.get_user_info()のみのテストコードで行った。 またBeautifulSoup4がリリースされていることを知り、lxmlあれば早くなるよって言ってたので、3と4の2パターンで行った。

以下が結果である。







上がBS3、下がBS4であるが結果としては、lxmlを使っているはずのBS4のほうが遅い結果になっている。処理が余計にかかっている印象。 いずれ改善されると思うけど、特に必要性を感じないのであればBS3を使っておけばいいと思う。

それにしてもchardetの処理が足を引っ張りすぎている気がする。それと自分のライブラリ(苦笑)

※ この結果を出したときは指定していなかったが、文字コードが固定で既知なら,from_encoding引数をBeautifulSoupに指定してあげるのもいいと思うよ。 実験的にPyGooglePlusにも使用してみたら、5分の1くらい処理時間が縮まりました。 省いてるから当然だね。 だとしてもC拡張のchardetが欲しくなるよね。だれか作らないかな

参考:



0 コメント:

Post a Comment