こんにちは。永和システムマネジメントの内角低め担当、はたけやまです。 作成したプログラムが想定していた速度で動かず困ってしまうこと、ありますよね? パフォーマンス改善を行う場合、プロファイラなどを使ってプログラムを計測し、どこがパフォーマンスのボトルネックとなっているかを見つけることが重要です。 Ruby プログラムをプロファイリングするための方法はいくつかありますが、今回は stackprof を使った方法をご紹介します。 stackprof https://github.com/tmm1/stackprof stackprof を使ったプロファイリングは以下の手順で行います。 計測対象のプログラムに stackprof を仕込む 計測対象のプログラムを実行する 計測結果からボトルネックを割り出す 計測対象となるプログラム 今回は例題として以下のライフゲームを計測してみます。 lifeg
今回は memory_profiler というモジュールを使ってプログラムのメモリ使用量を調べる方法について紹介する。 pypi.python.org このブログでは、以前に Python のプロファイラとして profile/cProfile や line_profiler について書いたことがある。 これまでに紹介したこれらのプロファイラは、主に時間計算量の調査が目的となる。 それに対して memory_profiler では、調べる対象は空間計算量となる。 blog.amedama.jp blog.amedama.jp 使った環境は以下の通り。 $ sw_vers ProductName: Mac OS X ProductVersion: 10.12.6 BuildVersion: 16G1212 $ python --version Python 3.6.4 下準備 まずは mem
概要 元サイトの許諾を得て翻訳・公開いたします。 英語記事: TestProf: a good doctor for slow Ruby tests 公開日: 2017/08/25 gemリポジトリ: test-prof/test-prof 著者: Vladimir Dementyev サイト: Evil Martians’ team blog 2017/10/10: 初版公開 2023/07/04: 更新 テストを書くことは、開発における重要なプロセスであり、RubyやRailsのコミュニティには特に当てはまります。私たちはテストでgreenが点灯するまで長時間待たされていることに気づいて、初めてテストスイートのパフォーマンスというものに関心を寄せるようになるものです。 私はテストスイートのパフォーマンスの分析に多くの時間を費やし、テストを高速化するテクニックを編み出すとともにツールを開
追記 [20061103]: ライブラリ非依存なバージョンも書いてみました。id:reinyannyan:20061103:p1 でご覧下さい。 最近自分で書いた JS プログラムが驚くほど重かったので、どこに原因があるか調べたいと思いました。 その方法として、怪しいと思う箇所に (あるいは思わない箇所にも) 手作業でタイマーを仕掛けて、部分部分の実行時間を計測するのも手だと思うんですが、クラスのどのメソッドでどのくらい時間が掛かっているのかが自動的に分かる、というのが理想的かなと思いました。 (以下、prototype.js 的な (OO 的な) コーディングを対象とした話になります) まず思いついたのは、プロファイルしたいクラス (function オブジェクト) を受け取って、メソッドを動的に書き換えるという方法です: for (var m in klass.prototype) {
Blog Search when-present<#else>when-missing. (These only cover the last step of the expression; to cover the whole expression, use parenthesis: (myOptionalVar.foo)!myDefault, (myOptionalVar.foo)?? ---- ---- FTL stack trace ("~" means nesting-related): - Failed at: ${entry.path} [in template "__entry.ftlh" at line 3, column 25] - Reached through: #include "__entry.ftlh" [in template "entry.ftlh" at
JavaScriptで少し大きなアプリケーションを作っていると、処理速度がどんどん遅くなってしまうことがある。処理速度を向上させるには、ボトルネックとなっている処理を見つけて、その部分のパフォーマンスを改善するのが一般的である。そこで、ボトルネックを見つけるのに便利なプロファイラを作ってみた。 コードはこちら。 var Profiler = Class.create(); Profiler.prototype.extend({ initialize: function(){ this.keys = []; this.records = {}; }, observe: function(object, name){ name = name || "Method"; for (property in object) { if(typeof object[property] == "functi
JavaScript, リンク最終更新 2006/12/22AspectJS 1.0.0 - Javascript AOP frameworkSlipwave Javascriptjs.aop.Aspectjs.aop.Observablejs.aop.PointCut あまきた日記 - JavaScriptでアスペクト指向marsのメモ - JavaScriptでAOPsubtechグループ - ピンク ブロッサム ダイアリー - JS で AOP というか before, after trigger檜山正幸のキマイラ飼育記 - JS番外編:これって、アスペクト指向かぁ llameradaの日記 - JavaScriptの簡易プロファイラ(new Hatena).blog() - JavaScript でプロファイリング dotvoid.com - Aspect Oriented Pro
Perl での print debug の方法の紹介がブーム(?)だったので、自分がよく行ってる Ruby での debug 方法7つについて書いてみます。 p ご存じの人も多い Kernel#p メソッド。これを使うとオブジェクトの内容を見やすい形で出力してくれます。 >> p ({:foobar => :baz}) {:foobar=>:baz}Object#inspect を使うと、p で出力するときと同じ文字列を String として取得できます。 >> puts ({:foobar => :baz}).inspect {:foobar=>:baz}初心者の頃この p での出力を使う方法がわからなくて困った記憶が…。 pp pp というライブラリを使うと、p より、より見やすい形式で出力してくれます。たとえば >> a = Array.new(10) { {:foobar => :
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く