ATmega128のSINとかの計算速度

公開日:  最終更新日:2014/06/05

すいません m(_ _)m、本記事はブログ引越時に書式が崩れました。順次修正中です。

ℹ️本記事にはPRが含まれています。

えーっと、子育ての都合上、こんな時間でも起きているSISOです。おはようございます。


構想していた、高速手抜き算術計算の移植ですが、やめることにしました。というのも、Mathライブラリの関数をいくつか試してみたら、すごく速い!ことがわかりました。そんなわけで、まずはやらないことにしました。


で、その驚きの結果というのが…(計測は手でやってますので、だいたいの値です)


H8/3694



  • sin() … 2.86ms

  • cos() … 2.89ms

  • atan() … 3.41ms

  • sqrt() … 21.3us

ATmega128



  • sin() … 252us

  • cos() … 245us

  • atan() … 190us

  • sqrt() … 14.7us

とまあ、まさしく桁違い!なのでした。sqrt()はH8/3694もよくがんばっていますが、他は本当に桁違いです。これだけ速ければ、そのまま実装しても大丈夫そうです。もちろん、速いに越したことは無いので、時間があったら高速手抜きプログラムも実装したいなー(もちろん、精度は落ちますけど)と思っています。それにしても速いです。うーむ。


ATmega128って、乗算が速いってのをどこかで読んだことがあるんですが、それが効いているのではないかと思います。いやー、驚いた驚いた。


プログラムですが、今からミルクの時間なので、あとで追記しておきます。





追記 2006/09/28 22:30


というわけで追記です。プログラムは普通にsin()とかをループで呼んでいるだけのものですが、一応、アップしておきます。ちなみにこのプログラムは、ソースコード先頭にある、「#define ATMEGA128」という定義を「#define H83694」にするだけで、どちらでもビルドできます。こんな感じのテクニックを使って、今後、移植性(ポータビリティ)の高いプログラムを公開していこうと思っていますので、楽しみにしていてください。あ、GDLでお願いします。比較は-O0でビルドしたものでやっています。

MathTest.zip

  • このエントリーをはてなブックマークに追加
  • Pocket

関連前後記事

Comment

  1. きゃのん より:

    おはようございます
    子育てとロボ両立大変でしょうね。
    それを容認している奥さんもえらいですね。
    ATmega128の開発・検証の記事楽しく読ませてもらってます。SISOさんのアップは難しい組み込みの扱い方が楽しくわかりやすく書き込みされているのが、毎回関心させられます。
    残念ながら私はSH2の方向で行こうと思っているのでCOREの考え方や方向性でしか記事の内容を読んでいくしかありませんが、いつも勉強になるのでありがたいなーっと思っています。

  2. SiSO より:

    こんばんは!きゃのんさん。
    子育て、楽しいですよ。「ほんぎゃぁぁぁ」とか泣かれても、おー、よしよし、と、まったりとやってます。妻は、よく理解してくれているので、本当にありがたいです。
    ところで、プログラムの方、どこまでいけるかわからないですが、手元でなるべくATmega128とH8/3694間で移植性が高い方法を取ろうと思っています。そんなわけで、そのうちARM7とかSH2とかも入ってくるかもです。
    あ、まだ内緒なんですが、WHIP (Wrapped Hardware Interface Program)というマイ・プロジェクト進行中です。内緒にするほどの事じゃないですね…。

Your Message

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

*

PAGE TOP ↑