ぎょーむ日誌 2001-10-05
2001 年 10 月 05 日 (金)
- 0300 起床.
早起きしたからといって仕事するわけでもない,
というのがまずいんだろうなあ.
コーヒーなど飲んでみる.
- もうちょっと内燃機関密度の低い土地に引っ越そうかなぁ,
とネット上の賃貸情報ながめる.
独房群の近くになるのかなあ.
それはちょっとイヤだなぁ.
- 0530 ごろから朝飯・弁当の準備.
朝飯.
シャワー.
- 0700 自宅発.
曇り.
特急に乗って
0710 京急平和島発.
普通に乗り換えて
0740 京急上大岡発.
ちょっと雨ふってるか.
0755 研究所着.
- なんかばかげたことをやって一日つぶしたような気がする
……
手元に残ってるメモによると,
三次元虚業ライブラリの高速化をめざしていたようである.
結果からいうとほとんど速くならなかった.
- 例によってコンパイルするときに
g++ に
-pg
オプションつけて,
実行結果を gprof にかけてプロファイリングしてみたんだが
……
全計算時間のじつに半分を三次元区画 Voxel の移動計算と
三次元実存 Vit (PipeTree の場合は VitTriangle だけ)
のアタリ判定に費してしまってるんだよね.
- 以前のライブラリでは三次元内移動を整数化しちゃって,
さらに Bresenham アルゴリズムまで使ってたわけだが
……
今回のは何もかも倍精度浮動小数点計算に依存している.
憎むべき割り算の回数も少なくないんだよね.
ちょっとした実験結果を示してみよう.
g++-2.95 でコンパイルするプログラムで
約 21 億回ほど以下の計算をやらせてみた場合の
計算所用時間である.
独房内 BookPC (PentiumIII 733MHz) で測定したもの.
(計算の種類)
|
(整数型 int)
|
(倍精度浮動小数点数 double)
|
かけ算 |
31.8 秒 |
53.3 秒 |
わり算 |
107.0 秒 |
109.8 秒 |
剰余 |
106.8 秒 |
n/a |
標準関数 div |
216.4 秒 |
n/a |
右シフト >>5 |
26.0 秒 |
n/a |
- まぁ,
これをみると計算機は数値計算が苦手,
わかるだろう.
特に割り算なんぞやらせると整数型でも倍精度でもほとんど
同じコストがかかる.
ということで,
速くしたければ整数化して右シフト演算に置き換えればよいんだろうが
……
うーむ,
ちょっとそれは面倒そうだ.
- ……
というような愚かしい試験と改良を一日やって,
結局 2% ほどしか速くならかったのでした.
うう.
1740 研究所発.
普通に乗って
1755 京急杉田発.
特急に乗り換えて
1810 京急上大岡発.
1900 帰宅.
- さっさと寝ちまう.
- 今日の食卓
- 朝 (0700):
米 0.6 合.
タマネギ・ニンニク茎・マイタケの炒めもの.
- 昼 (1220):
弁当.
米 0.8 合.
朝と同じ.
- 晩 (1930):
米 0.6 合.
朝と同じ.