問題タブ [gperftools]
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.
hex - gproftools プロファイリングでの 16 進関数名
gproftools (Google プロファイラー) を使用した CPU プロファイリングの後、一部の関数名が 16 進値として表示されます。
https://groups.google.com/forum/#!topic/google-perftools/7sdO7wrPUpEの最後のコメントによると、問題はASLRによって引き起こされたように見えます が、一部の関数名が 16 進数値であり、他の関数名が正常である理由がわかりませんでした。
プロファイリングのサンプル出力。
16 0.40% 86.80% 16 0.40% 00007f05e018bc5d
16 0.40% 87.20% 36 0.90% _IO_file_xsgetn
16 0.40% 87.60% 16 0.40% __memcpy_sse2
16 0.40% 88.00% 16 0.40% __tls_get_addr
15 0.40% 88.40% 15 0.40% __GI___libc_free
15 0.40% 88.70% 15 0.40% __GI_strlen
profiler - GPerf ツールの使用: 動作しない、リダイレクトの問題?
ソフトウェアを最適化するために、ソフトウェアのプロファイルを作成しようとしています。
gprof
コンパイル フラグを使用しました-g -pg -O3
が、結果の精度が十分ではありません。
コンパイルのスタックトレースは次のとおりです。
そして、これが私のプログラムの呼び出し方です:
実行後、すべて問題なく、gmon.out
ファイルを取得します。コマンドgprof ./bin/mdk-verifier | more
を実行すると、次の結果が得られます。
そして、明らかに ModalOperation::checkBranch の呼び出し回数がオーバーフローしており、この関数に入るたびに表示を行うことで、実際に 18 回以上の呼び出しを行いました...
そこで、より正確な別のプロファイラーを使用することを考え、Google のGPerfToolsを見つけました。
私はそれを使いたかったので、Ubuntuにインストールしました:
- libgoogle-perftools-dev
- google-perftools
そしてチュートリアルに従って、彼らは私に環境変数を設定するように頼んだCPUPROFILE
私はやったと私は得る:
実行可能ファイルのリンク中にも入れ-lprofiler
たので、すべて問題なく、ファイル内のデータのプロファイリングを開始できると思いました./prof.out
しかし、残念ながら、このファイルは表示されません...何も作成されていないため、何もプロファイルできません...
./prof.out
ファイルが作成されない理由と、プロファイリングでデータが収集されない理由を知っている人はいますか?
よろしくお願いいたします。
よろしくお願いします;
c++ - インストールせずに gperftools/Heaptrack を使用する
UNIX プラットフォームで C++ アプリケーションのヒープ プロファイリングを実行しようとしています。valgrind の massif を試してみましたが、アプリケーションが非常に遅くなり、アプリケーションの動作に影響します。
他のオプションを探していたところ、 gperftoolsとheaptrackに出会いました。これらはここで私の問題の実行可能な解決策になる可能性がありますが。ただし、これらのツールをインストールするのに十分な権限がないという制限があります。
Unixにインストールせずにgperftoolsまたはheaptrackをセットアップする方法はありますか?
前もって感謝します
c++ - gperftools を Rcpp と連携させる
こことここで関連する投稿を読み、ここで Dirk Eddelbuettel の講演を見ましたが、.log ファイルを取得することさえできませんgperftools
。と呼ばれる私のR
ファイルは次のRcpp_practice.R
とおりです。
の内容は次のeigen.cpp
とおりです。
次に、ターミナル(私はOSXを使用しています)で:
eigenprof.log
作業ディレクトリに座っているのを見たいと思っていましたが、そうではありません。また、フォームの他の投稿で見たメッセージが表示されませんPROFILE: interrupts/evictions/bytes = 012/34/567891
の最新バージョンがgperftools
インストールされていることを確認しました。($ brew upgrade google-perftools
与えるError: gperftools 2.5 already installed
)。
私は何が欠けていますか?
アップデート
@nrussell のものと一致するようにコードを変更した後、次のエラー メッセージが表示されます。
これはsourceCpp
、スクリプトを対話的に実行すると、行に表示されます。
c++ - プロファイラーの出力に表示される __nss_passwd_lookup() 呼び出しとは何ですか?
私はgperftoolsを使用して、GCC 5.4.0 (-O3 付き) を使用してコンパイルされた C++ アプリケーションのプロファイルを作成しています。
コードは高度に最適化されているため、出力に多くのブランチは表示されませんが、かなりの時間がかかる__nss_passwd_lookup()というブランチがあります。
私の唯一の推測は、何らかの形でメモリ割り当てに関連していることです。
オペレーティング システム: Ubuntu 16.04 x86_64、カーネル: 4.8。