ぎょーむ日誌 2002-04-17
2002 年 04 月 17 日 (水)
- 0640 起床.
とくに用事はないんだけど気合いで起きる.
シャワー.
部屋の片付け少々.
すぐに投げ出す.
0700 自宅発.
晴.
0710 研究室着.
朝飯.
コーヒー.
- せっかく早くきたのに,
なかなか仕事できぬへっぽこ状況.
- 長谷川宣教師殿からメイルいただき,
宣教師としての心得を教えていただく
……
って私は宣教するわけではありませんが.
とはいえ,
他人のココロをつかみ,
その秘密を暴いて掌握する手法の技術的側面は
参考になる.
さすがは本職の人心くらっかー.
- 午前中は書類の整理で終ってしまう
……
と書くともっともらしいんだけど,
じっさいのところ,
「ニセ」アカマツとりまとめ続けようとしたものの,
必要な紙切れのたぐいが見つからず,
しょうがないので段ホール箱からそういうの取り出して
そのへんに並べてみた,
というだけのこと.
そして自宅にはまだ数箱ほど未整理なやつがある.
そういえば,
探していた文書・メモは見つからなかった.
- どうもいまいちだと思いつつ昼飯.
いつの間にか曇天.
今日も苫小牧研究林では足場組み作業が続いてるはずだ.
雨など降ってなければよいのだけど.
- 午後の仕事.
私の場合,
紙切れのたぐいは整理がはなはだしくよろしくないんだけど,
電子ファイルはよく統合されている
……
~/redpine/paper
に入り make
すると,
最新データとモデルにあわせて
自動的に図版・表生成して
参考文献データベイスと連動しつつ
本文 LaTeX ファイルに組み込んで
Postscript ファイルにコンパイルされて
……
うーむ,
なぜ計算機の外にでると make
コマンドが
使えないのだろうか.
- どらふと読み直す.
書き方が不必要なほど偏執的なので,
どういう意図で書いてるかは (自分には) よくわかる.
しかし適切な表現法を用いてるのかどうか,
よくわからない.
いつものことながら.
- 膠着したので外に逃げ出す.
雨.
大学生協
の北大南端・生協会館店に行ってみる.
2F 文具区画で「久保」印鑑 (400 円) 買う.
ついでに筆記具なんぞも物色してみる.
ふーむ,
いつのまにかゲル式とかいうボールペンがでまわっているな
……
しかし今回もいつものごとく Pilot の
直液式
ボールペン (120 円,これは耐水性) 買う.
同じく 2F の書籍部で良さそうな統計学本を数冊みつけたんだけど,
生協会員証ないとめんどうになるかもと思ったんで
今日はこれで撤退.
1F の購買部は生鮮食品なんかもあるんだけど,
これは高くてヘボい.
地環研にもどって研究科事務室に印鑑を堤出する.
- さらに逃避はつづいて
……
同時処理ジョブと称して,
いまや ThinkPad 240Z つまりノート PC の奴隷的 X 端末としてしか
使われていない BookPC (PentiumIII 733MHz)
に計算ぢょぶを与えてみる.
次の計算プロジェクトに備えて,
自作三次元ライブラリ (現在の仮称は
kubolib/fvision
)
の改善をもくろむ.
試験台として Abies PipeTree
を用いる.
- えーと,
まず現状のまま動かそうとすると
……
おっと,
先月の学会大会前の小川森林計算のために
ライブラリのインターフェイスを少し直したんで,
このままでは
PipeTree
動かんか.
利用側の関数呼び出しを直すのに約 1 時間を費す.
まぬけだ.
- で,
Abies PipeTree
20 個体を 20 年間育成するのに必要な時間は
……
{393 秒, 397 秒, 403 秒}
というところか.
これを短縮したい.
できれば使用メモリも少なくしたい.
- 指針となるのは先日に購入した新 Scott Meyers 本
Effective STL
である.
えーと,
まずは安直に
-
第 4 項:
size() で 0 を調べる代わりに
empty を呼び出そう
を試してみるか.
list.size()
を使ってるところが
何ヵ所かあるんだよね.
で,
STL の実装によってはこれが定数時間処理で片付かない場合がある,
と.
- 実験してみると
{392 秒, 400 秒, 405 秒}
……
あ,
ダメだ.
私の使ってる
GNU の libstdc++2_10
ではもともと定数時間だったか.
- 次.
PipeTree
を育てるうえで
計算時間くってる
Voxel
空間の手さぐり這い回りの高速化だけど
……
連想コンテナ map
に格納されている
Voxel
をどうにかしてやれば ……
-
第 23 項:
連想コンテナをソート済み vector に置き換えることを
考えよう
-
第 25 項:
標準以外のハッシュコンテナに慣れよう
さて,
どっちだ.
- GNU の
libstdc++2_10
は SGI の STL をベイスにしており,
hash_map
がすでに使えるようになっている.
ということで第 25 項のほうを試してみよう.
- 変更は簡単で,
// Voxels.h
#include <map>
...
typedef map<IndexVoxel,Voxel*> MapVoxel;
で map
となっているところを
hash_map
と書き直すだけ.
- さて,
実験してみると
……
{366 秒, 367 秒, 370 秒}
……
おお,
こんどは 8% ぐらい計算時間が短縮されてるような.
これはけっこう effective といえる.
しかもメモリ使用量が 3-4 割減っている.
なんとならば
map
では二分木を構築して
データを探索するのに対して,
hash_map
では
key から「hash 値」が計算されて
値に直結してるので簡単なデータ構造ですむからだ.
- これほど便利な
hash_map
をいままでなぜ使わなかったか?
それは 1998 年に決められた ISO/IEC C++ 標準には
含まれていなかったからだ.
しかし Meyers 本によると,
ハッシュ利用コンテナーが STL に入らなかったのは
「標準化委員会では,ハッシュテーブルを加えようとすると,
標準の完成が大きく遅れると見なした」
ためであり
「次の版の標準にはハッシュテーブルが含まれることは
間違いない」
らしい.
で,
hash_map
,
hash_multimap
,
hash_set
,
hash_multiset
といった名前が「事実上の」標準名として現在使用されている,
ということなんで,
私もその尻馬にのって hash_map
使ってみることにしたわけだ.
- 途中で晩飯食ったりしながら三次元計算に使われる
計算資源量を調べていた.
おっと,
もう 2300 ちかくか.
さっさと帰らなくては.
- 2250 研究室発.
明朝,
自宅から書類など持って来るために講座の台車を借用していく.
ごろごろと台車を押しながら夜の札幌を歩く.
さいわいにも雨はあがっている.
そういえば今日は運動休養日になってしまったな.
「ぎょーむ日誌」も書いてない.
2305 帰宅.
- 今日の食卓
- 朝 (0715):
お茶部屋でパン・コーヒー.
冷蔵庫残留物整理とゆーことで,
いつ開封されたかよくわからぬ
タマリンドペイスト残りを片付ける.
うう.
- 昼 (1220):
お茶部屋.
米 1.0 合.
昨晩の炒めもの残り.
- 晩 (1930):
お茶部屋.
米 0.8 合.
チンゲンサイ・シイタケ・豆腐の炒めもの.
またお茶部屋残留調味料の利用.
なんとなく味噌味ふうに.