2010-06-05 411 views
2

我藉助一些演示和教程來檢查Firefox和Chromium的夜間版本,並支持WebGL,我忍不住想知道它們造成的極高CPU負載。WebGL的CPU使用率高嗎?

一個簡單的演示like this one運行在我的雙核心持續60%。大版本的this one使CPU達到100%並具有一些可見的幀丟失。
鉻似乎比firefox稍好,但不是太多。我很確定,如果這些是桌面應用程序,CPU負載將可以忽略不計。

那麼這裏發生了什麼?它在做什麼?運行這些簡單的腳本不能那麼苛刻。它是額外的安全層還是其他?


編輯:我發現這是porded這裏WebGL的原始演示: http://rrrola.wz.cz/files/puls_win.zip

運行這個(全屏)獲取的CPU持續48%,所以也許我錯了......

+0

我猜上下文切換仍然很昂貴。從JS到Native到GPU。 – 2010-06-05 16:00:41

+0

上下文切換到GPU?是吧?你的意思是CPU和GPU之間的同步嗎? OpenGL將渲染指令轉儲到緩衝區中並將它們傳輸到GPU中,但GPU不應該太多,GPU會在渲染中的指定點處使用緩衝區交換將結果同步到屏幕上,但CPU不涉及在所有。 – 2010-06-05 16:05:52

+0

@Ben,但是在每次opengl調用時都會切換到內核上... – shoosh 2010-06-05 16:18:52

回答

4

webgl的速度確實很慢。因爲它是新的,它使用一個軟件排序器。因此GPU - CPU - GPU基本上只需要一幀的調用。 firefox和webkit都在使用它

+2

我會繼續介紹EWGL在這裏說的。 WebGL規範要求渲染的3D畫布可以與頁面上的其他HTML元素合成(例如,以便文本可以出現在其上)。這意味着GPU呈現場景,然後CPU獲取副本並將其與呈現的HTML結合起來,然後將其發送回顯卡進行顯示。所以,每一幀都有GPU-CPU-GPU;這很貴。瀏覽器編寫者正在解決這個問題 - 將來的IIUC,GPU將執行合成。 – 2010-06-07 13:22:10

-1

圖形渲染是CPU密集型的,這就是爲什麼有顯卡的GPU,所以工作可以卸載到他們。我會嘗試你的演示,看看他們是如何在我的電腦上安裝了體面的視頻卡。

+0

這臺電腦有一個nVidia 8600,它不僅能夠處理這些。 – shoosh 2010-06-05 15:47:52

+0

確定不會再次這樣做LOL。我可憐的顯卡的GPU正在走向融化。所以,WebGL仍然是一項正在進行的工作,我們只需要說更多的優化。順便說一句,我的CPU沒有受到太多打擊。我使用的是nVidia 7900GS,所以我想是時候升級了:( – Khorkrak 2010-06-05 16:03:17

1

無法重現性能問題。第一個運行在98-100fps下,使用我的Core i5的一個核心。第二個使用一個核心的約50%。

這是與Chrome開發通道,Windows 7 64位,Radeon HD 5770,換句話說一個適度強大的現代機器。

另請注意,當代碼大量迭代時(並且這些演示看起來有很多多邊形),小代碼大小並不等於快速。

+0

難道你不覺得奇怪嗎?它使用了一個完整的核心基本上完成了大部分的任務嗎? – shoosh 2010-06-05 15:49:48