ホームページ >バックエンド開発 >PHPチュートリアル >paip.Performance追跡プロファイルの原則、構造、本質 PythonスイープJava php
パフォーマンス追跡プロファイルの原理、構造、本質 - Java php を使用した Python スキャン
##Background
私はさまざまな入力メソッド発音記号変換ツールを作成しましたが、Python のパフォーマンスは常に悪く、7,000 のレコードが30 分間視聴しました。
##目標
プログラムのパフォーマンスを分析すると、最終的には次の 4 つの基本的な質問に答えることができます。
プログラムの実行速度はどれくらいですか?
走行速度のボトルネックはどこですか?
プログラムはどれくらいのメモリを使用しますか?
メモリリークはどこで発生しますか?
漏洩したオブジェクトを参照しているのは誰ですか? 老者
Attilax Emong、メール: 1466519819@qq.com
転載、出典を明記してください: http://blog.csdn.net/attilax
#Tools cprofile, objgraph オブジェクト? これは、オブジェクト参照グラフを使用して確認できます。
このコマンドの出力は、/tmp/backrefs.png に保存される PNG 画像である必要があります。次のようになります:
後方参照
の赤いテキストのボックス一番下が私たちの興味の対象です。シンボル x によって 1 回参照され、リスト y によって 3 回参照されていることがわかります。 x がメモリ リークを引き起こした場合、このメソッドを使用して、すべての参照を追跡することで、x が自動的に解放されなかった理由を確認できます。
要約すると、objgraph を使用すると次のことが可能になります:
Python プログラムのメモリを占有している最初の N 個のオブジェクトを表示する
時間の経過とともに削除または追加されたオブジェクトを表示する
スクリプト内の指定されたオブジェクトへのすべての参照を表示する
#Test code
import cProfile
#分析結果をコンソールに直接出力
cProfile.run("mainx()")
#分析結果をファイルに保存しますが、内容は読み取れません... pstatsを呼び出す必要がありますモジュール解析結果
#cProfile.run("foo()", "result")
#コマンドラインから直接操作することも可能
#>python -m cProfile myscript.py -o result
def Convert2atiEnPn (phntc ):#17.3s 49tse
print ("o412")
#print(map)
#100test logx abt 3s
#logx(" phntc:---"+phntc)
li= SybalbeList(phntc) #7.6 s #logx(" #print_li(li)
for sbl in li:
#all saveval invoke timesafeVal 5.6s 446tse
#todox gaicheng jude modul ..わずか 0.1 秒
#yuln ...python d 例外 jon fei リソースl a。
母音 "")mycnst = safeval(map、sbl.csnt ")r = r+"@"+mycnst+" - "+myvowel 20.648 秒以内
順序: 標準名
ncalls tottime percall Cumtime percall filename:lineno(function) 1 0.000 0.000 20.648 20.648
49 0.006 0 17.359 0.354 :15(convert2atiEnPn)
49 0.003 0.000 1.105 0.023< string>:2(updatexo4)
10.003 0.003 20.648 20.648< string>:37(mainx)ncalls tottime tottime percall cumtime cumtime percall filename:lineno(fenction)文字列>:1()
49 0.002 0.000 6.395 0.131 :15(convert2atiEnPn)
49 0.003 0.000 1.155 0.024 :2(updatexo4)
1 0.004 0.004 9.265 9.265 :39(mainx)
#分析結果:
ご覧のとおり、Python 例外はパフォーマンスを消費します 代わりにマップ内の if キーを使用します 異常なパフォーマンス消費の範囲は 5 秒から 0.1 秒です
ログもパフォーマンスを消費します
#java と php プロファイル
java jprofile,.. php xdebug..
リファレンス
Python Profilers Performance Analyzer について - btchenguang - Blog Garden.htm
Python パフォーマンス分析ガイド - 技術翻訳 - オープンソース China Community.htm
Python--Dictionary-fussfuss1-ChinaUnixブログ.html