pybind11 に contribution した

最近業務で C++ のコードを書いて pybind11 で python binding を作っている。
バグにヒットしたので Issue 投げて、そのあと PR 送った。
2週間ぐらい反応がなくて pybind11 大丈夫なのか、と不安になったけど、マージされた。

https://github.com/pybind/pybind11/pull/1371

pybind11は黒魔術感が強くてアレゲなんだけど、C++ のコードに対してサクッと python binding を書くのには便利。
Ruby にはこういうのがなくて(あったら教えてください)、C++ のコードに binding を作るには一度 C でラップする必要があるので、何か似たようなものがあると便利そう。いつか。

valgrind --tool=callgrind で CPU profiling

とにかく gprof が使いにくいので他に何か、Mac なら Instruments があるんだけどな、と思ったら valgrind に callgrind があるのだった。


Install

Ubuntu:

$ sudo apt-get install valgrind kcachegrind

Mac:

$ brew install valgrind qcachegrind


How to run

$ valgrind --tool=callgrind ./a.out

callgrind.out.<PID> のようなファイルが生成される。

kcachegrind (or qcachegrind for mac) で可視化できる。

$ kcachegrind callgrind.out.26180

GUI環境が必要 (もしくは graphviz 出力)


How it looks like

Google it https://www.google.com/search?q=kcachegrind&tbm=isch

「Linux の仕組み」を読んだ



自分はすでに 詳解Linuxカーネルを読んだり[1][2]、 詳解システムパフォーマンス[3]を読んだことがあるので、既知のものが多かったが、 Linuxカーネル本を一人で読むのはハードルが高いので、カーネル本を読む前の本として良いという感想を抱いた。良い本だと思います。
A Ruby and Fluentd committer working at DeNA. 記事本文および記事中のコード片は引用および特記あるものを除いてすべて修正BSDライセンスとします。 #ruby #fluentd #growthforecast #haikanko #yohoushi #specinfra #serverspec #focuslight
はてぶ人気エントリー

Google