2017-09-02 63 views
-3

我在瀏覽器Firefox和Chrome瀏覽器中發現了奇怪的行爲。如果你的意思是簡單的數學一樣加,規模等可以通過瀏覽器優化數學運算結果嗎?

但是,當CPU獲得更多的負荷,數學可以在結果爲代價來優化

浮點運算通常是確定性的。然後它產生較小的差異的準確結果。但是這種差異在確定性的在線遊戲模擬中可能非常重要。

我的問題是,是真的嗎?我的意思是隻有Javascript。

+0

您將需要更具體,包括一些示例代碼來演示該問題。這聽起來好像你只是問了數百個關於浮點計算不準確的問題中的另一個問題,正如我所說的那樣,這個問題之前已經被多次詢問(並回答過)了。例如,請參閱[浮點數學是否被破壞?](https://stackoverflow.com/questions/588004/is-floating-point-math-broken?s=1|30.7172) –

+1

@KenWhite我的意思是同樣的數學產生總是相同的結果?事情(0.1 + 0.2!= 0.3)並非如此。當我的webworker獲得更多的CPU負載時,會產生一些不同的結果。現在想象兩個瀏覽器中的兩個物理世界,一個會滯後,一個不會。他們都會獲得不同的結果。它發生了。我的代碼不小。但我所要做的就是做一些假的延遲,如var j = 100000; while(j> 0){j--;}你將擁有它..我猜postMessage機制是讓這個bug發生的東西。 postMessage在v8中的工作原理非常好。 – ElSajko

+1

請發佈一個展示此行爲的代碼示例。你幾乎可以肯定是錯誤的,但是我們不能告訴你爲什麼,除非我們看到你在看什麼。或者你有沒有看過這個,只是有人告訴過你或什麼的? – xaxxon

回答

2

不,至少在V8中沒有這樣的優化。所有數學運算應始終返回相同的結果。如果他們不這樣做,那麼這是一個錯誤;如果您有可重複使用的情況,請在crbug.com/v8/new提交錯誤。

你看到的其他可能的解釋是錯誤的(或超頻的)CPU(或可能的內存)。你能在另一臺機器上重現問題嗎?

(有沒有「的postMessage」在V8中;這是一個鍍鉻/閃爍功能,V8一無所知如果你想周圍的鍍鉻的任何部分的源挖,cs.chromium.org是你的朋友)

-1

誰投了票,可以請解釋一下原因:不在話題中,缺乏清晰的表達?我沒有看到任何理由,這個問題的精神是合理和有意義的。我已經投了票,只是爲了評分。

在編譯器中沒有聽說過基於負載的精度調整 - 動態編譯器的基本前提是根據語義規則在源代碼中生成輸出,同時利用/利用底層系統功能。

與此同時,您提到的用例(遊戲應用程序)可能會利用隨機數和基於其運行環境的計算 - 例如系統的熵。系統中的負載可能會對這些應用程序中使用的謂詞產生可見的影響。然而,責任在於確保這種隨機性只能用於仿效遊戲環境中的現實世界多樣性,而不是影響遊戲算法的核心邏輯,以某種方式表現爲不適當的優勢球員等

希望這會有所幫助。

+0

隨機數與什麼有關......呃,這個人可能會問什麼? – xaxxon

+0

我現在不使用隨機數字等。將來會有。但感謝您的回答和投票。 – ElSajko