2017-09-25 7 views
0

RcppでRパッケージを作成しました。ここでは、全シミュレーションがC++で実行され、結果はRで解析されています。 C++の機能の中で何が起きているのか分かりませんし、関数がRの中からしか実行できないときにC++プロファイラを実行する方法がわかりません。Rcppコードをプロファイルする方法(Linux上で)

これまでのところ、gperftools(questionstutorials)しかしガイドは不完全である(多分彼らは私が欠けている知識のレベルを前提としていますか?)、リンクがなくなっていて、私は壁にぶち当たっています。したがって、この質問。

  1. インストールgperftools
  2. ProfilerStart( "myprof.log")を追加C++ヘッダ上のgperftools/profiler.hを含める(私はパックマンと余分/ gperftoolsからインストール):私はでてるのはここですそしてProfilerStop()-lprofiler
  3. ファイル名を指定して実行 "$ CPUPROFILE =" myprof.log "R -f myscript.R" と私は
  4. コンパイルをプロファイリングしたいのか周りのC++コードでの

現在の壁はgccで "Undefined Symbol:ProfilerStart"と表示されるので、リンクに何か問題があると思いますか?

+0

まあ、それは過去に私のために働いていた私のサイトで古いslidedecksのいくつかのように... –

答えて

0

結局のところ、私が経験していないことに起因するリンクエラーです。これは、初めてMakevarsを使用するためです。 手順4で、PKG_LIBSに追加する必要があったときにコンパイルに使用されるPKG_CXXFLAGSに「-lprofiler」を追加しました。私は変更を加え、現在はプロファイラがうまく動作します。これが今の私のMakevarsです:

PKG_CXXFLAGS += -Wall -pedantic -g -ggdb #-fno-inline-small-functions PKG_LIBS += -lprofiler CXX_STD = CXX11

1

私は本当にgperftoolsに感心していません。また、インストゥルメントプロファイラのように見えますが、サンプリングベースのプロファイラーは使いやすく、実行速度も速いでしょう。 Intels VTuneは優れたサンプリングベースのプロファイラーで、教育ユーザーの場合は無料で利用できます。あなたがいなくても、あなたの組織はすでにライセンスを持っているかもしれません。

あなたのgperftoolsの問題は、はい、リンカの問題です。関連情報(リンクコマンド?コンパイルコマンド?実際のエラーメッセージ)を共有しないことに決めたので、私たちはあなたをさらに助けることはできません。

+0

あなたが完全に正しい、私は実際に含まれている必要があります私のMakevarsの質問です。私は他のプロファイラを完全に私に推薦することを人々が期待していたと思いますか? – mozsalles

関連する問題