5月 062012
 

 まず真っ先に書いておくが、Ruby をディスるつもりは全くない。

 以前、風向は単位ベクトル平均を取ることを書いた。気象庁の「風向」の定義は10分平均、航空管制で用いられる「風向」は2分平均が使われるらしいが、USB Weather Board + Weather Meters を用いた観測では2分、10分、60分の平均を計算している。当初、Ruby で集計していたのだが、データ取得のタイミングである 3 秒ごとに実行されるので、 PhenomII X6 1065T だとこの処理だけで (800MHz のままとはいえ) 1 コアを使う程度の負荷がかかっていた。

 もちろん負荷軽減のために単位ベクトル化処理は演算済みのテーブルで変換するだけだったし、平均処理に必要な ∑ の計算は SQLite 上で行なっていた。それでもそれだけの負荷がかかっていたので若干問題意識を持っていた。実際、ググってみると、Ruby での数値演算は (LL の中でも) 遅い傾向にあることが指摘されていたりする。そこで、軽くベンチマークしてみた。

Continue reading »