アカウント名:
パスワード:
数値演算の精度を端折って高速化したと。
浮動小数点演算で、64ビットのdouble型演算の代わりに、可能な限り32ビットのfloat型の演算を使用することで、大幅にその演算速度が向上したという。
数値演算の精度が問題になる場面で、不具合が起きなければいいが・・・Officeスウィート系のWebアプリは怖くて使えんなあ。
明らかに処理の内容を変えて「高速化」というのは疑問を感じますね。それで、C++に迫ったといわれてもなんか違う。
世の中の最適化を全否定だな。答えが一緒なら処理なんて関係ないでしょ。
型が単精度から倍精度に変わるんだよ?常に答えが一緒になるとは限らないでしょ。
んで、最適化によって値が変わる可能性があるから、Cとかにはvolatileが用意されてるわけで。JavaScriptにvolatileに相当するものは私の知る限りは無いはず。そういう言語で値が変わるかも知れない最適化ってのはちょっと問題ある気がする。
JavaScriptの仕様的にはオーバーフローしたら倍精度に勝手に変換するみたいだけど、そこら辺どうなんだろ。仕様に合わせて内部処理を最適化しただけって話ならいいんだけど。
数値計算の世界では、倍精度なら精度が高くて、単精度なら精度が低い、なんて思ってると違ってる場合もあります。
単純な数値表現の精度より、計算アルゴリズムの方が計算誤差に大きく影響するケースが少なくないためです。 例えば、単純に合計求めるだけでも値に大きさのばらつきがあると倍精度で愚直に加算するより、単精度でもソートしてから加算するアルゴリズムのほうが精度が高くなります。歴史がある数値計算ライブラリなどはそういう考慮が詰まっていて、倍精度で作られた下手なライブラリより単精度のライブラリの方が精度が高くなる、なって状況が簡単に起こります
まあ、数値計算の精度ってのは使いドコロに適したものを正しく使うってのが、このストーリーでも大事ってことですな。
より多くのコメントがこの議論にあるかもしれませんが、JavaScriptが有効ではない環境を使用している場合、クラシックなコメントシステム(D1)に設定を変更する必要があります。
アレゲはアレゲを呼ぶ -- ある傍観者
数値演算の精度が問題になることないの? (スコア:0)
数値演算の精度を端折って高速化したと。
浮動小数点演算で、64ビットのdouble型演算の代わりに、可能な限り32ビットのfloat型の演算を使用することで、大幅にその演算速度が向上したという。
数値演算の精度が問題になる場面で、不具合が起きなければいいが・・・Officeスウィート系のWebアプリは怖くて使えんなあ。
Re: (スコア:0)
明らかに処理の内容を変えて「高速化」というのは疑問を感じますね。
それで、C++に迫ったといわれてもなんか違う。
Re: (スコア:0)
世の中の最適化を全否定だな。答えが一緒なら処理なんて関係ないでしょ。
Re: (スコア:0)
型が単精度から倍精度に変わるんだよ?
常に答えが一緒になるとは限らないでしょ。
んで、最適化によって値が変わる可能性があるから、Cとかにはvolatileが用意されてるわけで。
JavaScriptにvolatileに相当するものは私の知る限りは無いはず。
そういう言語で値が変わるかも知れない最適化ってのはちょっと問題ある気がする。
JavaScriptの仕様的にはオーバーフローしたら倍精度に勝手に変換するみたいだけど、そこら辺どうなんだろ。
仕様に合わせて内部処理を最適化しただけって話ならいいんだけど。
Re:数値演算の精度が問題になることないの? (スコア:1)
数値計算の世界では、倍精度なら精度が高くて、単精度なら精度が低い、なんて思ってると違ってる場合もあります。
単純な数値表現の精度より、計算アルゴリズムの方が計算誤差に大きく影響するケースが少なくないためです。 例えば、単純に合計求めるだけでも値に大きさのばらつきがあると倍精度で愚直に加算するより、単精度でもソートしてから加算するアルゴリズムのほうが精度が高くなります。歴史がある数値計算ライブラリなどはそういう考慮が詰まっていて、倍精度で作られた下手なライブラリより単精度のライブラリの方が精度が高くなる、なって状況が簡単に起こります
まあ、数値計算の精度ってのは使いドコロに適したものを正しく使うってのが、このストーリーでも大事ってことですな。
の