Comments
Description
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日月曜日