2011-06-27 37 views
6

隨着Html5開始逐漸成熟,我們看到了更多有關視頻或畫布元素等實驗的實驗。是否有可能在瀏覽器中使用JavaScript對用戶系統進行基準測試

當用帆布進行實驗時,例如用顆粒製作煙花時,1000顆顆粒可能在現代機器上運行良好,但在3年機器上可能會非常緩慢。

是否有基準用戶系統動態更改畫布實驗(或任何其他內容)以優化爲特定用戶。

編輯:這有可能會是最好的解決辦法:http://benchmarkjs.com/

+0

你讓我想到這個:http://clients.futuremark.com/peacekeeper/ – thirtydot

回答

8

測量渲染幾幀任何你正在做的事情所需的時間,並相應地調整細節的級別。如果您不介意細節變化,您可以使用連續測量。

不要想要做的是讓你的用戶通過一個五分鐘的基準測試,然後他們可以對你的東西做任何事情。

+0

@Matti Virkkunen這個想法似乎是最好的。我很驚訝,它沒有被更頻繁地使用。 10幀應該足夠了,或者你認爲需要更多? – Sycren

+0

你認爲什麼是一個好的基準?素數低於100? – Sycren

+0

@Sycren:我只是運行實際的東西,如果運行速度太慢,就會進行調整。 –

2

Futuremark的Peacekeeper Benchmark幾乎已經做了這個。我認爲它也測試了一些其他的東西,但它也做了大量的帆布基準測試。

我想你可以設計一些基準測量用戶在畫布上的幀率,然後根據它來調整細節。這可以通過設置一個較短的時間間隔並在畫布上渲染東西來實現,然後在每次迭代中使用Date對象計算需要多長時間並計算平均幀速率。

2

編輯:哎呀......太快讀了這個問題。我的答案並不適用。


取決於你想要的準確度水平。

如果你不想要超級準確的東西,可能需要一些工作。

我看到它的方式;你最大的問題之一就是將不同瀏覽器中的各種JS引擎考慮在內,並根據特定的瀏覽器和引擎的基準度量每個人。

例如,嘗試在IE 5.5上運行任何SunSpider測試,然後在同一臺機器上的谷歌瀏覽器上運行...驚人的區別。你必須考慮到這一點。 http://www.webkit.org/perf/sunspider/sunspider.html

理想情況下,你想要關聯不同瀏覽器之間的分數(也就是說,這個測試在IE 6的機器A上運行x毫秒,在IE 8上運行在同一臺機器上的y毫秒,所以我可以通過使用不同的平均因子將IE 6分數與IE 8分數相關)。可能很難獲得足夠大的數據樣本量來完成有效的工作。

+0

我不認爲他想爲*計算機*(不需要比較不同的瀏覽器)「得分」。唯一重要的是當前瀏覽器環境的性能。 – thirtydot

+0

@thirtydot - 對的就是你。這就是我得到的撇脂。 – Steve

2

應該很簡單。只要保留一個幀計數器和經過的時間在任何函數中更新您的畫布並將後者分割爲後者以獲得FPS。您可以縮小粒子/樣本數量等。動態地基於FPS。所以基本上 - 是的,但它是完全自定義的。

相關問題