24

三角関数の計算は一般的に費用がかかるという記事をどこかで読みました。これは本当ですか?もしそうなら、それが彼らがtrig-lookupテーブルを使用する理由ですよね?

編集:うーん、それで、変化するのが度(1度まで正確)だけである場合、360エントリ(すべての角度)を持つテーブルのルックアップはより速くなりますか?

4

8 に答える 8

19

高価は相対的な用語です。

最も速く実行される数学演算は、プロセッサによって直接実行できる演算です。確かに整数の足し算と引き算はそれらの中にあります。プロセッサによっては、乗算と除算もある場合があります。プロセッサ(またはコプロセッサ)が浮動小数点演算をネイティブに処理できる場合があります。

より複雑なもの(平方根など)では、これらの一連の低レベルの計算を実行する必要があります。これらのことは通常、数学ライブラリ(プロセッサが実行できるネイティブ操作の上に記述されている)を使用して実行されます。

これらはすべて最近非常に速く発生するため、「高価」とは、実行する必要のある量と、発生するのに必要な速度によって異なります。

リアルタイム3Dレンダリングソフトウェアを作成している場合は、環境からあらゆる速度を引き出すために、多くの巧妙な数学のトリックとショートカットを使用する必要があるかもしれません。

一般的なビジネスアプリケーションで作業している場合、実行している数学的計算がシステムの全体的なパフォーマンスに大きく影響しない可能性があります。

于 2010-03-19T18:15:04.410 に答える
16

Intel x86プロセッサでは、浮動小数点の加算または減算には6クロックサイクル、乗算には8クロックサイクル、除算には30〜44クロックサイクルが必要です。ただし、コサインには180〜280クロックサイクルが必要です。

x86はハードウェアでこれらのことを行うため、それでも非常に高速ですが、より基本的な数学関数よりもはるかに低速です。

于 2010-03-19T18:31:40.353 に答える
7

sin()、cos()、およびtan()は数学関数であるため、一連の開発者を合計して計算されるため、コストのかかる計算を回避するためにルックアップテーブルを使用することがあります。

トレードオフは精度とメモリにあります。精度の必要性が高いほど、ルックアップテーブルに必要なメモリの量が多くなります。

次の表を1度正確に見てください。

http://www.analyzemath.com/trigonometry/trig_1.gif

于 2010-03-19T18:06:06.763 に答える
2

簡単な答えは、それらは原始的な数学関数(加算/乗算/減算など)よりも高価であるということですが、人間の時間の点では高価ではありません。通常、人々がルックアップテーブルと近似値を使用してそれらを最適化する理由は、1秒間に数万回潜在的にそれらを呼び出しており、マイクロ秒ごとに価値がある可能性があるためです。

プログラムを作成していて、1秒間に数回呼び出す必要がある場合、組み込み関数ははるかに高速です。

于 2010-03-19T18:14:53.763 に答える
2

テストプログラムを作成し、自分でタイミングを調整することをお勧めします。はい、プラスとマイナスに比べると遅いですが、それでもシングルプロセッサ命令です。何百万回もの反復で非常にタイトなループを実行していない限り、問題になる可能性はほとんどありません。

于 2010-03-19T18:15:39.037 に答える
2

はい、(他の数学演算の乗算、除算と比較して):リアルタイムで何かをしている場合(行列演算、ビデオゲームなど)、三角関数の計算を内側のループから移動することで、多くのサイクルをノックオフできます。

リアルタイムで何かを行っていない場合は、いいえ、費用はかかりません(ディスクから大量のデータを読み取る、Webページを生成するなどの操作に比べて)。トリガー操作は、CPUによってハードウェアで実行されることが期待されます(1秒あたり数十億の浮動小数点演算を実行できます)。

于 2010-03-19T18:18:58.110 に答える
1

計算している角度が常にわかっている場合は、毎回計算する代わりに、それらを変数に格納できます。これは、角度が変わらないメソッド/関数呼び出しにも当てはまります。いくつかの式を使用して(sin(theta / 2)からsin(theta)を計算し、値が繰り返される頻度を知る-sin(theta + 2 * pi * n)= sin(theta))、計算を減らすことで賢くなります。このウィキペディアの記事を参照してください

于 2010-03-19T18:13:43.187 に答える
0

はい、そうです。三角関数は、系列を合計することによって計算されます。したがって、一般的には、単純な数学演算よりもはるかにコストがかかります。平方根についても同じことが言えます

于 2010-03-19T18:09:33.713 に答える