WIREDVISION の記事を みていたら詳しい解説にリンクがあり, 読んだらけっこう面白かったので ざっくり訳しました. また YukiWiki にお邪魔しております. one-pass なのでいつになく粗がありそうですが, みのがしてください...じゃなくて直してやってくだい. まえに cycle collector の話を 書いてから二年ちかく. 感慨ぶかい. 私自身はというと, 今も巡回参照を素手で断つ日々. 毎夜のように涙がリークしてます. かみさま...

そういえば もう C++ なんて好きでもないし使いもしない理由。 も 訳したけど, C++ プログラマ以外にはどうでもいい内容なので忘れてた. 個人的には completely agree with でございました.

madvise()

そういえば文中に madvise() の話がちらっと出てきた. これは何かと人々の胸を焦がす API らしい.

llre を作っているとき, 私もなんとかストールなしにファイルを map できないかと 調べていて madvise() の存在を知った. (Gecko の逆の用途ですね.) よしよしと思い今度は grep のコードを見ると, 次のようなコメントがあって 妙にがっかりした記憶がある.

/* Do not bother to use madvise with MADV_SEQUENTIAL or MADV_WILLNEED on the mmapped memory. One might think it would help, but it slows us down about 30% on SunOS 4.1. */

"prefetch madvise" でぐぐると色々泥臭そうな話題がヒットして萎える. でも上の記事の, Mac では意味がなくて Linux で有効というの話は面白かった.

jemalloc に限らず, メモリアロケータやファイルシステムをアプリケーションレイヤで 再発明する話を読むと複雑な気分になる. そうやれば速くなるのだという荒野への夢と, そのくらい OS でやってくれという舗装道路のぼやき. 現実にはアプリケーションを書くのに手一杯で下回りの高速化まで手を回せる機会は稀だ. OS には頑張ってほしいし, そんな OS を応援するアプリケーションでありたい.