問題タブ [ruby-prof]
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.
ruby - プロファイルJekyllビルド時間
私はJekyllを使用してサイトを構築していますが、サイトのコンパイルにかなり長い時間(数分)がかかり始めています(600件を少し超える投稿)。一部のプラグインが原因である可能性がありますが、さまざまなプラグインとパーサーのオンとオフを切り替えるよりも、ビルドのパフォーマンスをプロファイリングするためのより良い方法があるはずです。
ビルド中の最小限の出力はヒントを与えません-すべての時間は単に「サイトのビルド」ステップに費やされます。jekyllスクリプトを実行してアイデアを得ることができると思ったので、サイトのルートディレクトリにruby-prof
あるようにjekyllスクリプトのローカルコピーを作成して実行しました。jekyll.rb
サイトは正常に構築されているように見えますが、プロファイラーは醜いコアダンプで窒息します。
私のサイトの構築プロセスをプロファイリングし、なぜそれがとても遅いのかを理解するためのよりインテリジェントな方法はありますか?
次に、コンパイル時間を短縮するための秘訣はありますか?(たとえば、に_cache
ディレクトリが存在する_plugins
ことはわかりますが、それが何をするのか正確にはわかりません--auto
。Jekyllのフラグも表示されますが、特定のページを常に再コンパイルするように構成する方法がわかりません。変更されていない投稿を再コンパイルせずに、変更されていない(たとえば、Twitterプラグインを毎回再実行する必要がある)。
誰かが直接調べたい場合は、サイトのJekyllソースがGithubにあり、追加のgem依存関係についてのreadmeにいくつかのメモがあります。
ruby - rvm gemset を使用して ruby-prof でメモリ使用量をプロファイリングするトリックはありますか?
Ruby 1.8.7 を搭載した Mac OS X でメモリ使用量に対してruby-profを動作させようとしてきましたが、今のところうまくいきません。
RubyProf::MEMORY
modeには Ruby のパッチが適用されたバージョンが必要であることをドキュメントから理解しています。RVMを使用して、GC パッチを適用したバージョン ( Rails のドキュメントで参照されていることがわかりました) をインストールしようとしました。
このコマンドの出力に基づくと、すべてが良好に見えます。コンソール出力に「Applying patch 'ruby187gc'」とはっきりと表示されます。
RVM gemset を使用しようとすると、問題が発生するようです。これをテストするために、次のスクリプトを作成しました。
このスクリプトrvm use 1.8.7 --patch ruby187gc
の前に . ただし、のようなものを試すとrvm use 1.8.7@gemset_name --patch ruby187gc
、出力ファイルにはすべての「nan」値が含まれます。
何を与える?パッチを適用したバージョンの Ruby を RVM gemset と一緒に使用するための特別なトリックはありますか? 問題は別の場所にありますか? 私は指を交差させており、誰かが非常によく似た問題に遭遇し、以前にこれを理解したことを願っています.
ruby-on-rails - ルビー教授の負の時間?
私はruby-profに基づくrspec-profを使用して、かなり時間がかかる仕様をプロファイリングしています。しかし、彼らは否定的な時間を報告しているので、私が得た結果を解釈することはできません。rspec-prof / ruby-profを間違って使用していますか?これはバグですか?
ruby-on-rails - Ruby-prof で Newrelic developermode が機能しない
newrelic_rpm
Rails 3.2 アプリで開発者モードをローカルで使用しています。これはうまくいっています。
インストールruby-prof
して、newrelic ローカル ダッシュボードで「プロファイリングを開始」をクリックし、アプリに戻ると、アプリのすべてのページで「#.
トレースバックの先頭数行:
何が問題なのかを解決する方法はありますか?
ruby - ruby-prof に Ruby コア / 標準ライブラリ / gem メソッドを無視させるにはどうすればよいですか?
Ruby プロファイリングは初めてですruby-prof
が、人気のある選択肢のようです。gem をインストールしてプログラムを起動しました。
ただし、すべての Ruby コア メソッドと標準ライブラリ メソッドのプロファイリング データ、およびその他の gem が含まれているため、出力は非常に詳細です。たとえば、上位 3 行は次のとおりです。
私のプログラムが文字列と配列を多く扱っていることはすでに知っているので、それは私にとって少しでも役立つ情報ではありません。コード内のホットスポットだけを気にします。
-p graph_html
や など、他のプリンタ モードをいくつか試しまし-p call_stack
たが、すべて同じ問題が発生します。
ruby-prof
メソッドの削除と簡素化をサポートしていることがわかります。
しかし、私が本当に欲しいものを取得する明白な方法はないようです。これは、私のコードのみのデータをプロファイリングすることです。つまり、Ruby コア/stdlib からのコード内で経過した時間と、他の宝石は私の内部で経過した時間としてのみカウントされます。コード。
foo
自分のコードに、何千回も呼び出されてパフォーマンスが低下しているためにパフォーマンスのボトルネックになっているメソッドがあることがわかったら、自分のコードとその中で呼び出されたコア/ライブラリ コードの間の経過時間の内訳を確認したいだけです。その特定の方法。
なぜこれが標準機能ではないのか理解できません。誰もがやりたいことだと思うからです。最初に自分のコードをプロファイリングし、最適化するものがなくなったら、gem の最適化を開始する可能性があります。 Rubyコア/ stdlibを使用することもできます。私は何が欠けていますか?
ruby - Ruby-prof のグラフ プリンターと自己による並べ替えを使用すると、合計パーセンテージが 100% を超えます
私が走れば
私のgraph.txtの最初の数行は次のようになります。
これは、私のスクリプト aggregate.rb に固有のものではないと思います。したがって、簡潔にするためにソース コードを省略します。
質問: %total 列に 100% を超えるパーセンテージがあるのはなぜですか? グラフプリンターで自己ソートは出来ないのですか?これはバグですか、それとも何かを見落としましたか。大変助かります。
ありがとう!
ruby-on-rails - Ruby コードのメモリ リークを追跡するにはどうすればよいですか?
質問
rake タスクでメモリ リークをデバッグしています。次の呼び出し履歴を確認したい:
- 生き物
- それらのオブジェクトを最初に割り当てたオブジェクトまたはライン
これは ruby-prof で可能ですか?
そうでない場合、どのツールを使用すればよいですか?
設定
宝石
- レール3.2.16
- event_bus 1.0.0 ( https://github.com/kevinrutherford/event_bus )
- activerecord-fast-import ( https://github.com/jsuchal/activerecord-fast-import )
レーキタスク
- DATA LOAD INFILE および Active Record オブジェクトを使用して、CSV ファイルを MySql データベースに直接インポートします。
私が試したこと
モードを試してみた
- RubyProf::割り当て
- RubyProf::メモリ
ドキュメントに記載されているのは次のとおりです。
RubyProf::ALLOCATIONS オブジェクト割り当てレポートは、プログラム内の各メソッドが割り当てるオブジェクトの数を示します。
RubyProf::MEMORY メモリ使用量レポートは、プログラム内の各メソッドが使用するメモリ量を示します。
これは、ruby-prof が生きているオブジェクトだけでなく、オブジェクトの総割り当てを報告するだけであることを意味します。
Ruby-MassとBloat Checkを試しましたが、どちらもやりたいことができないようです。Ruby-Mass も何らかの理由でメモリ内の FactoryGirl オブジェクトを見つけてクラッシュします...
ruby-on-rails - Rails アプリの ruby-prof を使用して、KCacheGrind のコール ツリー プロファイリングをどのように出力しますか?
ドキュメントによると、Rails アプリをプロファイリングできます http://ruby-prof.rubyforge.org/
これをconfig.ruに追加しました
ただし、次のファイルのみを出力します
出力は完全に理解できません。そこで、Windows 用の QCacheGrind をダウンロードしました。 http://sourceforge.net/projects/qcachegrindwin/?source=推奨
これらのファイルは読み取られません。ruby-prof docs には、KCacheGrind ファイルを生成できると書かれています
RubyProf::CallTreePrinter - KCachegrind と互換性のあるコール ツリー レポートを作成します。
しかし、Rails でそれを行う方法については触れていません。RubyProfのページを見てみましたが、空っぽでした。 http://ruby-prof.rubyforge.org/classes/Rack/RubyProf.html
ルビー 2.0.0、レール 4.0.3