問題タブ [cprofile]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
python - PyPy は CPython より大幅に遅い
私は自分で作ったキャッシングシステムをテストしてきました。その目的は、Django Web アプリケーションを高速化することです。すべてをメモリ内に格納します。cProfile によると、私のテストのほとんどの時間は QuerySet._clone() 内で費やされており、これは非常に非効率的であることが判明しました (実装を考えると、実際にはそれほど奇妙ではありません)。
PyPy を使用して処理を高速化することに大きな期待を寄せていました。私は64ビットマシンを持っています。しかし、必要なすべてのライブラリをインストールした後、PyPy でコンパイルされたコードは通常の Python コードよりも約 2.5 倍遅く実行されることがわかりました。コードは CPU バウンドです (データベース クエリはまったくないため、IO バウンドはオプションではありません)。1 回のテストは約 10 秒間実行されるので、JIT が開始するにはそれで十分だと思います。私は PyPy 1.5 を使用しています。1 つのメモ - ソースを自分でコンパイルしたわけではなく、64 ビットの Linux バージョンをダウンロードしただけです。
PyPy で実際に CPU を集中的に使用するコードの実行速度が低下する頻度を知りたいです。PyPy が最高の状態で動作するのを妨げる何か間違ったことがあるといいのですが。
編集
正確な cPython 出力:
PyPy 1.5:
Python 2.7:
python - python メソッドをメモ化する方法
指定されたパラメーターから辞書を作成する方法を考えてみましょう。
そして、実行されるたびに newDict メソッドを呼び出す別のメソッドがあります。したがって、最後に cProfiler を見ると、次のようになります。
もちろん、私の newDict メソッドは1785times と呼ばれます。さて、私の質問は、呼び出し時間を短縮するために newDict メソッドを記憶できるかどうかです。(念のため、関数の記憶に影響があるかどうかはわかりませんが、変数はほぼすべての呼び出しで変更されます)
サブ質問: 17k コールは多すぎると思います。コードは効率的ではありません。しかし、統計を見て、これが通常の結果なのか、それとも呼び出しが多すぎてコードが遅いのかを述べていただけますか?
python - 「int」オブジェクトを与えるpython cProfileは呼び出し可能エラーではありません
次のスクリプトはうまく動作します:
cProfile を使用してコードをプロファイリングしようとすると、次のようになります。
また
次のエラーが表示されます。
私のスクリプトは、後者の場合にcProfileをチョークすることを除いて、両方の場合で正常に実行されます。私はそれが本当にささいなことでなければならないことを知っています、ただそれを釘付けにすることはできません.
解決を手伝ってください。ありがとう
python - cProfileがデータをファイルに保存すると、文字が乱雑になります
bot4CA.pyという名前のモジュールでcProfileを使用しているので、コンソールで次のように入力します。
モジュールが実行されて終了すると、thing.txtという名前のファイルが作成されます。このファイルを開くと、そこにいくつかの情報があり、残りは、必要なデータのきちんと整理されたファイルではなく、文字の寄せ集めです。ファイルを除いて、コマンドラインで通常使用する場合のように、cProfileの使用方法を知っていて、データのテーブルがきちんと整理されている人はいますか?.txtファイルのデータの例を次に示します。
私が本当に望んでいるのは、cProfile.run()を呼び出すとどうなるかということです。これにより、このプログラムはかなり大きく、大量に実行されるため、印刷される代わりにファイルに保存される以外のすべての関数の実行時間を示す、きちんと整理されたテーブルが印刷されます。関数の。
python - Python の cProfile が関数名を認識しない
プロファイリングしたい email というアプリの機能があります。このようなことをしようとすると、爆発します
この管理コマンドを実行すると、次のエラーがスローされます。
ここで何が欠けていますか?cProfile は文字列をどのように評価しますか (グローバル/ローカル名前空間で func 名を検索します)?
python - 広く再利用されたデコレータを使用したシステムのプロファイリング
私たちのコードベースには、広く使用されているデコレータがいくつかあります。
ランタイムプロファイルを作成すると、コールグラフの大部分が砂時計のように見えます。多くの関数が1つの関数(デコレータ)を呼び出し、それが多くの関数を呼び出します。これは私が望むよりも役に立たないプロファイルです。
この状況を修正する方法はありますか?デコレータを削除することはできません。必要な機能を提供します。
事後にcProfileデータからデコレータを手動で削除することを検討しましたが、データが呼び出し元->呼び出し先の関係に要約され、呼び出し元->デコレータ->呼び出し先の関係が破壊されるため、不可能と思われます。
python - Python プロファイラーによって測定された CPU 時間と、実際のユーザーおよびシステム時間との関係はどれですか?
1 つのプロセッサで実行されるスクリプト (およびマルチスレッドなし) で Python 組み込みプロファイラーを使用する
プロファイラーによって報告される CPU 時間は 345.710 CPU 秒です。
そして、実際の、userおよびsys時間は次のとおりです。
ご覧のとおり、CPU 時間はほぼリアルタイムです (345.710 = 5m45.710s)。
この結果を踏まえて、プロファイラーによって報告された CPU 時間には、他のプロセスによって使用されたタイム スライスとプロセスがブロックされた時間が含まれていると想定できますか? つまり、プロファイラーの CPU 時間はプロセス時間 (user+sys) ではなく、 time(1) の出力で「real」、「user」、および「sys」は何を意味するかで説明されているウォール クロック時間です。
よろしくお願いします
python - cProfile は `__file__` の通常の値をオーバーライドしているようですが、どのように適応しますか?
__file__のように、プログラムに関連付けられたデータへのパスを提供するために組み込みグローバルに依存するプログラムがありpath_to_stuff = os.path.join(os.path.dirname(__file__),'stuff')ます。問題は、これを で実行するとpython -m cProfile myprog、 の値が__file__パスではmyprogなく (どうやら) cProfile モジュールへのパスになることです。
マニュアルを読み、ここで検索しましたが、これについては何もわかりません。(a) cProfile をそのままにしておく__file__か、(b) 実行時に cProfile で実行していることを認識して、この特別なケースでリテラル文字列でパスを初期化できるようにする方法はありますか?
編集:または、(c)、常にprogram.pyのすぐ隣にあるディレクトリを見つけるより良い方法はありますか?
python - Pythonスクリプトをプロファイリングするときに、percallによってcProfile出力を並べ替えます
使っていますpython -m cProfile -s calls myscript.py
python -m cProfile -s percall myscript.py動作しません。
Pythonのドキュメントには、「統計のドキュメントで有効な並べ替え値を確認してください」と記載されています。http://docs.python.org/library/profile.html#module-cProfileが見つかりません。
python - 効果的なCython cProfilingは、多くのサブ関数を書くことを意味しますか?
Cython でいくつかのコードを最適化しようとしていますが、cProfileは十分な情報を提供していません。
プロファイリングをうまく行うには、多くのサブルーチン func2、func3、...、func40 を作成する必要がありますか?
に関数がありますが、多くの for ループと内部操作があることに注意してfunc1くださいmycython.pyx。しかし、cProfile はそれらのループの統計を教えてくれません。