...

重い拡張を撲滅するためのファーストステップ

by user

on
Category: Documents
8

views

Report

Comments

Transcript

重い拡張を撲滅するためのファーストステップ
Emacs Profiler
重い拡張を撲滅するためのファーストステップ
2009年9月7日月曜日
最近の動向
2009年9月7日月曜日
拡張の多機能化
• anything
• auto-complete, perl-completion
• yasnippet
• js2-mode, nxhtml-mode
• etc
2009年9月7日月曜日
anything
2009年9月7日月曜日
auto-complete
2009年9月7日月曜日
js2-mode
2009年9月7日月曜日
特徴
• 良い面
• 優れた機能やUIを提供
• 外部プログラムに非依存
• 悪い面
• CPUやメモリの消費量の増加
2009年9月7日月曜日
問題
• Emacsの停止時間
• 演算/GC
• 操作性の低下
• 場合によっては使いものにならない
2009年9月7日月曜日
例
• 重い
• nxhtml-mode, JDEE, etc
• 少し重い
• js2-mode, nxml-mode, semantic,
Wanderlust, svn-status, etc
2009年9月7日月曜日
最適化の必要性
• 開発者は次のプロセスを繰り返す
• プロファイルをとる
• 問題の箇所を修正する
2009年9月7日月曜日
プロファイラの現状
2009年9月7日月曜日
標準的な手法
• benchmark.el
• elp.el
• ストップウォッチ
2009年9月7日月曜日
benchmark.el
• benchmark-runに測定したい式を渡す
• (benchmark-run (silly-loop))
• (13.681311 0 0.0)
• 式のトータルの実行時間(だけ)が分かる
2009年9月7日月曜日
elp.el
• Emacs Lisp Profiler
• 測定用のルーチンがadviceで挿入される
• パッケージ全体のプロファイルが可能
• オーバーヘッドがものすごい
• 呼び出し元が分からない
2009年9月7日月曜日
elp.el
2009年9月7日月曜日
3S Profiler
• 正確じゃない
• 詳細じゃない
• 正直面倒くさい
• プロファイラしかない
2009年9月7日月曜日
理想のプロファイラ
2009年9月7日月曜日
Native Profiler
• こんなプロファイラが欲しい
• システム全体が対象
• コールツリーが見れる
• 少ないオーバーヘッド
• 簡単に使える
2009年9月7日月曜日
作ってみた
2009年9月7日月曜日
デモ
2009年9月7日月曜日
使い方
• M-x profiler-start
• ごにょごにょ
• M-x profiler-results
• ね、簡単でしょ?
2009年9月7日月曜日
Emacs Native Profiler
2009年9月7日月曜日
実装
• setitimer(2)でサンプリング
• コールツリーはbacktrace関数の情報か
ら作成
• http://code.google.com/p/emacs-nativeprofiler/
2009年9月7日月曜日
TODO
• より詳細な情報を収集
• GC, acllocation, I/O, rendering, etc
• マルチプラットフォーム対応
• 本体へのマージ
2009年9月7日月曜日
M-x intro
• まつやまともひろ
• id:m2ym
• @m2ym
• http://cx4a.org/
• (株)アリエル・ネットワーク
2009年9月7日月曜日
Emacsのトラノマキ
• Software Design
• 最新情報からコアなネタまで盛り沢山
2009年9月7日月曜日
五反田Emacs
• (株)アリエル・ネットワーク社内で行う
Emacs勉強会(?)です
• http://atnd.org/events/1467
• ピザが食べられるらしいです
2009年9月7日月曜日
Thank you!
2009年9月7日月曜日
Fly UP