2017-09-02 6 views
-3

FirefoxとChromeの両方のブラウザで奇妙な動作が検出されました。結果を犠牲にして数学をブラウザで最適化することはできますか?

浮動小数点演算は、通常、決定論的であるあなたは、追加、スケールのような単純な数学を意味している場合など

が、CPUがより多くの負荷を取得するときに、数学は、結果を犠牲にして最適化することができます。それで、小さな差であまり正確でない結果を生み出します。しかし、このdiffは、決定的なオンラインゲームのシミュレーションを行う上で非常に重要です。

私の質問は真実ですか?私はただJavascriptを意味する。

+0

問題を示すサンプルコードなど、より具体的にする必要があります。浮動小数点計算の不正確さについての何百もの質問のうちのもう1つを他の人に聞いているように聞こえるように思えます。たとえば、[浮動小数点演算は壊れていますか?](https://stackoverflow.com/questions/588004/is-floating-point-math-broken?s=1|30.7172) –

+1

@KenWhite私は同じことを意味します数学は常に同じ結果を生みますか?事(0.1 + 0.2!= 0.3)はそうではありません。私のWebワーカーがCPU負荷を増やすと少し違った結果が出ます。 2つのブラウザーで2つの物理世界を想像してみましょう。両方とも異なる結果が得られます。それは起こる。私のコードは小さくありません。しかし、私がしなければならないことは、var j = 100000のような偽の遅延を作ることです。 while(j> 0){j--;}あなたはそれを持っています。私はpostMessageメカニズムがこのバグを起こすものだと思います。 postMessageがv8でどのように動作するかのソースは素晴らしいでしょう。 – ElSajko

+1

この動作を示すコードの例を投稿してください。あなたは何が起こっているのかは間違いありませんが、あなたが何を見ているのか分からなければ、なぜあなたに話すことはできません。または、あなたはこれを見たことがない、誰かがあなたに何かそれを言ったか? – xaxxon

答えて

2

いいえ、少なくともV8ではこのような最適化はありません。すべての数学演算は常に同じ結果を返さなければなりません。もしそうでなければ、それはバグです。再現可能なケースがある場合は、crbug.com/v8/newにバグを報告してください。

あなたが見ている他の可能な説明は、欠陥のある(またはオーバークロックされた)CPU(またはおそらくはメモリ)です。別のマシンで問題を再現できますか?

(V8には「のpostMessage」はありません。。。それはV8がについて何も知らないことクローム/点滅機能だあなたはクロームのいかなる部分のソースの周りを掘るしたい場合は、cs.chromium.orgはあなたの友達です)

-1

これをダウン投票した人はその理由を説明してもいいかもしれません:トピック外ですか?私はそれについて何らかの理由を見ません、質問の精神は合理的かつ意味があります。私はスコアを平準化するために投票した。

動的コンパイラの基本的な前提は、基本的なシステム機能を活用/活用しながら、セマンティックルールに基づいてソースに指示された出力を生成することです。

同時に、あなたが言及したユースケース(ゲームアプリケーション)は、動作する環境(例えば、システムのエントロピー)に基づいて乱数と計算を利用する可能性があります。システム内の負荷は、アプリケーションで使用される述語に目に見える影響を与える可能性があります。しかし、このようなランダム性は、ゲームアルゴリズムのコアロジックに影響を与えないように、ゲームのコンテキストで実際の多様性をエミュレートするためにのみ使用されるべきであることをアプリケーションに頼っています。プレーヤーなど

これが役立ちます。

+0

乱数と何が関係があるのですか? – xaxxon

+0

私は現在、乱数などを使用していません。将来になるだろう。しかし、答えと投票に感謝します。 – ElSajko

関連する問題