元派遣プログラマの自称技術系ブログです。雑記とか自作のオープンソースプロジェクトの話とか。
Javaとか組込とかできます。お仕事ください。

早い事はいいことだ?

ARToolkitの演算量を大幅に減らすコードを作ったけど、それがオリジナルより優れた実装かどうか?と言う話。


計算速度だけ見れば、NyARToolkitは完全に上。プログラム構造的にも、クラス化したことで「コードとしての」可読性は上がってる。


でも研究者の人から見たら、この部分のコードは多分使い物にならないのかな。何故なら、コードから元の論文を推測できないから。


オリジナルのコードは、計算手順を追えるように冗長な演算をきちんと書いてある。これなら論文とつき合わせて、「ああ、なるほど」みたいな事もできるし。

一方NyARToolikitのコードは、「コード」としては短くて読みやすいけど、元の理論にあった思想が読み取れない場所がある(特に大きな最適化をかけた部分)


演算器をブラックボックス的に使う人向けには、「早く動いたほう」が良いけど、動きを伝える実証プログラムとしては、やはり「何故そうなるか」を語るようなものが必要なんだろうな。

ひたすら効率を追求するのもいいけれど、「何故、そうなるか」が判るコードも、きちんと並列に残す事は重要だね。これからも気をつけよう。


・・・と、工学ナビさんの掲示板でもらったレスで思いました。


#ちなみに、NyARToolkitは速度優先のコードと、オリジナルに忠実なコードの両方をもっています。オリジナルのコードを使うと場所によっては10倍程度計算速度が遅くなりますが、人間が読む分には100倍くらい判りやすいです。