青木日記

<前の日 | この月 | 次の日>

2002-06-11

KSM

ちくしょーわかんねー。なんなんだこの GC は。なんでこれで大丈夫なんだあー。

黒ほむら

食べた。今回は固形スープがない。具も少ない感じがする。ついでに、とんこつスープが白いので黒って感じじゃない。

が、それはそれとしてやっぱうまい。これまでのほむら味(謎)も残しつつとんこつスープな味わいだ。辛ほむらはマイナーバージョンアップだったけど今回の黒ほむらはメジャーバージョンアップと言ったらいいのだろうか。また生麺、スープの出来はこれまで通り非常によい。どちらかと言えば個人的には素ほむらのほうが好きだけど、今回のも悪くない。少なくとも他のカップラーメンに比べればずっとうまい。そのぶん高いのが難点だが、100 円ちょいアップでこれだけ味の差があれば十分ではなかろうか。

続・関数グラフ

そう、cflow みたいなやつです

rb_f_binding → blk_copy_prev → scope_dup
             → frame_dup
             → rb_f_block_given_p
             → rb_thread_current
             → scope_dup
というような呼び出し関係を関係を図にしたいんです。なんかありそうですよねえ。

グラフ視覚化

rdoc が使ってたのは graphviz だった。これは便利そうだ。

graphviz インストール

configure; make; sudo make install で完了……と思ったけど、使ってみると freetype サポートが効いてなくてフォントが汚ない。freetype が入ってなかったようだ。とっくに入れたと思ってたけどな。速攻でつっこむ。

コンパイルしなおし。……configure で "freetype/freetype.h not found" と出る。--with-freetypeincludedir=/usr/local/include/freetype2 が必要だった。

ぐあー、まだだめじゃん! --with-freetypeincludedir=/usr/local/include も必要なのか。二つ同時に指定するには…… --with-freetypeincludedir="/usr/local/include/freetype2 -I/usr/local/include" でごまかした。いいのかこんなんで。

うう、今度はコンパイルが止まるよう。--without-tk --without-tcl も必要だった (graphviz には tk8.3 が必要なんだけど、家には tk8.0jp しかない)。

freetype インストール (再)

README はちゃんと読まないとだめですねえ。手で書きかえたほうがよいところが一ヶ所あるようです (特許関係でわざとオフにしてある)。ついでに prefix も /usr にしとく。これで graphviz もオプションなしでいけるようになった。

メモ

データ視覚化

うーむ、「Ruby で Visualize SWiki」の文字が……。この人、おれとなんとなく興味範囲が似てるな。

doxygen

ドキュメント生成ツール doxygen は graphviz を使ってクラスツリーのグラフを出力してくれるらしい。ということは関数グラフの視覚化もやってくれるかも? ということで試してみた。

……関数はやってくれないようだ。くそっ。

CSS

ここのデザインを変えてみた。名付けて「LoveRubyNet なテーマ」。

関数フロー図

完成。ruby の eval.c の関数呼び出し関係のグラフです。

余分な関数を手動で削ったあと、部分 DAG を刈り込んでます。刈り込みなしのはこちら。なんと画像サイズは 10139x990、バイト数も 198KB あります。ノード数は約 300 です。

本日のツッコミ(全2件)
matz (2002-06-11 17:48)

KSMのGCアルゴリズムは本当はだめなケースもありそうな気がするんですけど。たとえば、Cで記述された関数の中でインスタンス変数を書き換えた場合、元のオブジェクトはprotectしないと消えちゃいます。でも、Schemeだからそういうことは滅多にないのでしょう。

あおき (2002-06-13 17:32)

なるほど……。懲りずにもう一回チャレンジしてみます。


<前の日 | この月 | 次の日>
2002|04|05|06|07|08|09|10|11|12|
2003|01|02|03|04|05|06|07|08|09|10|11|12|
2004|01|02|03|04|05|06|07|08|09|10|11|12|
2005|01|02|03|04|05|06|07|08|09|10|11|12|
2006|01|02|03|04|05|06|07|08|09|10|11|12|
2007|01|02|03|04|05|06|07|08|09|10|11|12|
2008|01|02|04|05|06|09|10|
2009|07|
2010|09|