新作ハーフマウスのためのマウントとホイールの切削.をしようと思ったが,もともと暗い環境なのに蛍光灯が切れていてほとんど加工面が見えない.何ヶ月も前から切れているけど新しいものに替わらないあたり私のサークルの活動実態を反映している.仕方ないので自転車用のライトで照らしながら作業する.昔明かりがなかった時代の苦労がわかる.
しかしながらホイール径がイマイチ.設計がよくなかったらしい.明日の夜また作ることにする.また暗いと嫌だなあ.
2010年9月30日木曜日
2010年9月5日日曜日
中部地区初級者大会
名古屋まで遠征してきました.今回は行き帰りともリッチに新幹線を利用したのでだいぶ楽に移動し,かつ,移動時間の有効活用ができました.参加者は多かったように思いますがスムーズに進行していましたね.さすがです.
私は,ハーフマウスの競技だけ参加し,結果は以下の通り.参加者が少なく,エキスパートの人除外のおかげですが.私は初級者なのか?ハーフでは初級者ですね.たぶん.
こじまうす6 5秒772 優勝
次は中部地区大会ですかね.それまでに今年の本番用にハーフマウスを作りたいが,どうせいろいろあって忙しいだろうな.でも作るけど.
私は,ハーフマウスの競技だけ参加し,結果は以下の通り.参加者が少なく,エキスパートの人除外のおかげですが.私は初級者なのか?ハーフでは初級者ですね.たぶん.
こじまうす6 5秒772 優勝
次は中部地区大会ですかね.それまでに今年の本番用にハーフマウスを作りたいが,どうせいろいろあって忙しいだろうな.でも作るけど.
2010年9月4日土曜日
小数点演算の単精度化
STM32に小数点演算をさせる場合は倍精度だと時間がかかるし,倍精度も必要無いので単精度で計算すべきだろうと思う.つまり全ての浮動小数点変数はfloatで宣言し,浮動小数点定数は1234Fのようにfloat型であることを明示すべき.特に定数値は数値だけ書くと倍精度として扱われるので,途中の演算が倍精度で行われて時間がかかるだけでなく,代入の時に単精度に変換することになるのでよけいにかかる.
私のマウスは現状定数には何もつけていなので倍精度で計算されていることになる.全部定数にFをつけるのが面倒だなあとか思っていたが,やはりそういうコンパイルオプションはあるらしく,
-fsingle-precision-constant
とすると定数が全て単精度になるらしい.(GCC以外にこのオプションがあるかどうかは知らない)
以下,このオプションを付けない場合の調査結果.ただし,一定時間毎に割り込みがかかってたりするので計算時間の絶対値に意味はない.
1. 304ms
float temp=1.0;
for(int i=0;i<100000;i++) temp = temp * 1.0001;
2. 116ms
float temp=1.0;
for(int i=0;i<100000;i++) temp = temp * 1.0001F;
3. 225ms
double temp=1.0;
for(int i=0;i<100000;i++) temp = temp * 1.0001;
4. 406ms
float temp=1.0;
for(int i=0;i<100000;i++) temp = temp / 0.9999F;
私のマウスは現状定数には何もつけていなので倍精度で計算されていることになる.全部定数にFをつけるのが面倒だなあとか思っていたが,やはりそういうコンパイルオプションはあるらしく,
-fsingle-precision-constant
とすると定数が全て単精度になるらしい.(GCC以外にこのオプションがあるかどうかは知らない)
以下,このオプションを付けない場合の調査結果.ただし,一定時間毎に割り込みがかかってたりするので計算時間の絶対値に意味はない.
1. 304ms
float temp=1.0;
for(int i=0;i<100000;i++) temp = temp * 1.0001;
2. 116ms
float temp=1.0;
for(int i=0;i<100000;i++) temp = temp * 1.0001F;
3. 225ms
double temp=1.0;
for(int i=0;i<100000;i++) temp = temp * 1.0001;
4. 406ms
float temp=1.0;
for(int i=0;i<100000;i++) temp = temp / 0.9999F;