タグ

optimizeとpythonに関するkuyのブックマーク (5)

  • Pythonコードの高速化ソリューションと言えばPyPyだよね〜 | TRIVIAL TECHNOLOGIES on CLOUD

    PyPyはRPythonという文法的にちょっとした制約があるPythonを使う必要がある(大抵のコードはそのまま動くらしいけど)。そういう制限があったとしても,ほぼPurePythonなコードをPyPyで動かすだけでここまで高速化できるというのは驚きだ。 今年の夏に行ったEuroPython 2010でPyPyのセッションで,ちょうどJITの作者Antonio Cuniさんが話してた。トークが終わった後「PyPyのJITはなんで速いの?」との質問に答えてAntonioさん曰く「オブジェクトが持っているデータをメモリ上の固定位置に配置してるのが効いているみたい」と言っていた。この質問をしたのは実はセッションを聞きに来てたGuidoで,彼自身もPyPyにとっても興味があるみたい。 動的型付け言語の高速化手法はいろいろあるけど,PyPyのアプローチは副作用も少ないし,straightforwar

  • GAE/Python で HTTPリクエストを並列化 « Stop Making Sense

    August 2011 (1) July 2011 (1) June 2011 (2) April 2011 (2) March 2011 (2) February 2011 (2) January 2011 (6) December 2010 (6) November 2010 (5) October 2010 (8) September 2010 (2) August 2010 (3) July 2010 (9) June 2010 (4) March 2010 (1) February 2010 (7) January 2010 (2) はじめに GAE/Python ではスレッドや子プロセス等による並列化が出来ないので、タスクキューを使うのが一般的です。 しかし、URLフェッチについては、非同期リクエストを利用することで、タスクキューを使わずに複数のHTTP通信を同時実行出来ます。

  • カウンタのシャーディング - Google App Engine - Google Code

    Python 概要 CGI 環境 データの格納 概要 エンティティとモデル データの作成、取得、削除 キーとエンティティ グループ クエリとインデックス トランザクション 型とプロパティ クラス GQL リファレンス リファレンス Model Expando PolyModel Property Query GqlQuery キー 関数 例外 サービス Memcache 概要 Memcache の

  • Python高速化テクニック - atsuoishimoto's diary

    ここ2〜3日、InfoPileのパフォーマンスチューニングをしており、ちょっともたつきを感じるような部分をほとんど解消することができた。InfoPileで使用した高速化テクニックの中で効果が大きく、よくつかわれそうなものを紹介しよう。尚、以下のスクリプトはPython 2.6.4で実行した。 listよりtupleを使う 可変長である必要のないシーケンスは、できるだけlistではなくtupleを使って構築しよう。listの生成/解放コストは意外と大きいのだ。 import time def run1(): for i in xrange(1000000): [i, i+1, i+2, i+3, i+4, i+5, i+6, i+7, i+8] def run2(): for i in xrange(1000000): (i, i+1, i+2, i+3, i+4, i+5, i+6, i+

    Python高速化テクニック - atsuoishimoto's diary
  • s.decode('utf8') よりも unicode(s, 'utf-8') の方が速い - methaneのブログ

    http://groups.google.com/group/comp.lang.python/browse_thread/thread/314a3043ea63319f/ unicode vs s.decode unicodeはLOAD_GLOBALで、s.decodeはLOAD_ATTRでスタックに積まれる。で、LOAD_GLOBALの方が速い。 さらに言えば、何度もデコードを行うのであれば u = unicode のようにローカル変数にするとさらに速くなる。LOAD_ATTRやLOAD_GLOBALは最適化で消すことが出来ないので、明示的にローカル変数に束縛することはCPythonに限らず有効な手法だ。 'utf8' vs 'utf-8' 単なる1タイプの問題だけど、内部的には 'utf-8' が利用されており、 'utf8' を使うと 'utf-8' だと判断するのに1クッション必

    s.decode('utf8') よりも unicode(s, 'utf-8') の方が速い - methaneのブログ
    kuy
    kuy 2009/08/17
    これは勉強になる。文字列処理って案外ネックになってるのかも。量が多いだけに。
  • 1