07:15:21 # Life perf record でのコールグラフをC++でみてみる。 どうもomit frame pointer に対応していないっぽい。 amd64. -O0 だとコールグラフがでるけど-O2 だと出ないのでこれかなと思って -fno-omit-frame-pointerをつけるとコールグラフが出た。 spiritとか使っててファンクションオブジェクトとかテンプレートとか使いまくっているとインライン展開されるのでコールグラフに記録されないコードパスがありすぎて辛い。 -O1くらいだとソースコードと対応がとれている感じになる。 あと、テンプレート使いまくっているとテンプレートのパラメータがどれかという情報の途中で文字列の制限がくるっぽくてつらい。たとえば std::_Hashtable<boost::iterator_range<__gnu_cxx::__normal_iterator<char const*, std::string> >, std::pair<boost::iterator_range<__gnu_cxx::__normal_iterator<char const*, std::string> > const, int>, std::allocator<st d::pair<boost::iterator_range<__gnu_cxx::__normal_iterator<char const*, std::string> > const, int> >, std::_Select1st<std::pair<boost:: iterator_range<__gnu_cxx::__normal_iterator<char const*, std::string> > const, int> >, RangeEqualTo<boost。 google-perftoolsのC++コードをうまく扱ってくれる具合と比べると雲泥の差。
11:23:25 # Life mtp deviceをマウントしてみる。 fuseのファイルシステムがあるので、それをつかうのが楽かな? 若干癖があるようで、mv できないっぽい。本当か?あとなんかファイルシステム操作がブロックするっぽい。あとファイルのタイムスタンプが全部1970年。 go-mtpfs と gvfs のmtpがあるっぽい。ブログ記事。悩ましいところ。
$ mtpfs ~/mnt/nexus7 $ df ~/mnt/nexus7/ Filesystem 1K-blocks Used Available Use% Mounted on mtpfs 14005168 1868209 12136959 14% /home/dancer/mnt/nexus7
13:56:28 # Life nexus 7 でうごくコーデック。 なんかパラメータがたくさんありすぎるので試行錯誤しまくり。 結局 webmに変換するのが一番パラメータが少なくてよかった気がする。 しかしシングルスレッドで動いているっぽくてせっかく4コアのマシンでエンコードしてもリアルタイムくらい遅い。 mtp なんか処理の完了が異様に速いのだけど、どういうしくみになってるんだろう。USB2.0とは思えない速度。
avconv -i filename.avi filename.webm
06:22:57 # Life 随分長い間悩んだけどMacBook AirのF10とF11がどこで奪われていたのかやっと発見した。 mouseemuパッケージが uinput (デバイスドライバからの信号を仲介するかんじ)レイヤーでフックしていたようだ。 xev ではマウスのクリックしか検出されないのでどうもデバイスドライバレベルでやってるっぽいけど /proc/sys/dev/mac_hid/ では設定されていないのでなんでだろうと疑問に思っていたのだった。
07:30:58 # Life boost spirit と戯れる毎日。 istream_iterator 経由でパースしたらコードが綺麗になるんじゃないかと一瞬思ったけど実際問題一文字づつ読み込む系のコードになるっぽくて壮絶に遅かった。 27MBのテキストファイル(Packages ファイル)を読み込んでイテレートするだけで4秒とか。 mmapして処理した場合は他の処理もいれても0.5秒もかからないのでこれはないなぁ。
$Id: 201210.html.ja,v 1.6 2012/10/16 22:47:52 dancer Exp $