- ベストアンサー
数値計算の計算コストを下げるためのこつ
時間のかかる数値計算をなるべく早く終わらせるためのコツについてまとめられているサイトや書籍があれば教えてください。 例えば、 http://www.index-press.co.jp/books/excel/excel-02.pdf のページに少し書かれています。 こういうちょっとしたコツがもっと書かれている書籍ってないでしょうか? また、 足し算、掛け算、指数計算、sin計算、sinh計算 など様々な関数や演算子がありますが、これらの計算で どれがもっとも時間がかかるとかってまとめられている書籍とかってないのでしょうか?
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
NO.1の補足に対しての返答です。 日本語訳(第3版)においては271ページ、表15-1として載っています。 15.6.2節をご参照ください。
その他の回答 (2)
- ki073
- ベストアンサー率77% (491/634)
マイクロコンピュータのCPUの命令レベルの時間であれば、ちょっと古いですが http://www.intel.co.jp/content/dam/www/public/ijkk/jp/ja/documents/developer/ia32.pdf が参考になります。四則演算の中では割り算がかなり遅くなります。割り算をかけ算で置き換えられれば有利になります。sqrtもCPUで計算していますが、他の関数ではソフトウエア的にやってますので、かなり時間がかかります。 >時間のかかる数値計算をなるべく早く終わらせるためのコツ いろいろなレベルがありますが、まずはアルゴリズムを検討する。有名どころはいろいろ数値計算に関する本がでていますので、図書館ででも見てください。 手法については http://ja.wikipedia.org/wiki/数値解析 をきっかけに探されてはいかがでしょうか。 それと高速計算を目的としたライブラリを使う方法があります。 BLAST, FFTW3が有名どころです。 実際にはぴったりと当てはまるものがないので、ほとんどは自分で工夫するということになります。 最近のCPUは並列化が簡単にできるようになっているのと、計算速度に比べてメモリアクセスが遅いので、パイプラインやメモリキャッシュをうまくつかえると速くなる場合はあります。 参考 http://news.mynavi.jp/column/architecture/index.html 実際には,SIMDを使えるようにプログラムを書けると結構速くなります。 また最近だとGPUを使う手も有りますが、私がやった限りでは、単純な繰り返しが多いときでないとCPUを上回るのは難しいように思います。 インタープリタレベルだと、なるべく行列やベクトル計算の機能を使い、それでも速度がたりないと、その部分だけコンパイラで書き換える方法をとるのがまあ妥当なやりかたではないでしょうか。 全部、CやFortranで書くのは結構大変なので、私自身はそのようなやり方をしています。
- static_puts
- ベストアンサー率50% (5/10)
後半の「様々な関数や演算子…」の部分ですが オライリーの"C実践プログラミング"にある程度の(演算子・関数などの)計算コストがまとめられていますよ。
お礼
ありがとうございます。 原書ですが オライリーの"C実践プログラミング" の第3版を見てみたのですが、どこに書かれてあるか分かりませんでした。 何ページ辺りに書かれていますでしょうか?