享受數百萬最新的 Android 應用程式、遊戲、音樂、電影、電視、書籍、雜誌等。隨時隨地,透過您的設備。
該應用程式面向開發人員或任何對 OpenGL 和 Canvas 之間的效能差異感到好奇的人。具體來說,它測量使用 OpenGL ES 2.0 與 Java 和 C 混合的明確繪製 2D 精靈的效能,以及使用 Canvas 與 Java 繪製 2D 精靈的效能。
執行測試完成後,您可以透過按下裝置的後退按鈕查看效能基準分析。
它類似於 Chris Pruett 的 Sprite Method Test,但針對 OpenGL ES 2.0 進行了更新。他的 Sprite Method Test 運行過時的 ES 1.0,並且在 Jelly Bean 上被破壞(因為三重緩衝)。
該應用程式適用於所有支援 OpenGL ES 2.0 的裝置。
這是無廣告且無打擾的。
更多詳情:
具體來說,該應用程式測量使用 OpenGL ES 2.0 與 Java 和 C 混合的明確繪製 2D 精靈的效能,以及使用 Canvas 與 Java 繪製 2D 精靈的效能。
在每一幀上:
背景顏色略有變化,在紅色和白色之間跳動。
每個精靈都會移動隨機(高斯)量。如果精靈的中心超出螢幕邊緣,則精靈會移動到隨機的螢幕位置。
Canvas 測試使用 SurfaceView 和 Canvas.drawBitmap()。所有計算均在 Java 中(使用 Random.nextGaussian() 和 Random.nextFloat())在 float[] 上完成。
OpenGL ES 2.0 測試使用 Java 中的 GLSurfaceView。計算是在 C 語言中(使用 drand48() 和 Java 高斯演算法的內聯 C 等效項)在本機 float[] 上完成的。繪圖也是用 C 語言完成的,使用 glDrawArrays(GL_POINTS, ...)。 C (NDK) 方法在每一幀中透過 JNI 從 Java 呼叫。
所有測試都具有相同的 Java 分析操作開銷。
統計數據:
FPS 資訊是關於幀實際發佈到螢幕的時間(技術上講是 SurfaceFlinger)。
繪製資訊是關於發出繪製指令(以及 OpenGL 測試中的 glFlush() + glFinish())所需的時間。它不計算實際翻轉螢幕緩衝區的時間。
推送資訊(僅限 VBO)是將頂點資料推送到 GPU 緩衝區所需的時間。每幀通常 <0.5ms(四捨五入到 0.000s)。當使用非 VBO OpenGL 測試時,該時間實際上包含在繪製時間中。在實際應用中,將資料推送到 GPU 可能需要更長的時間。此範例僅包含一個 VBO(或頂點陣列),每個精靈有 2 個浮點。實際應用會擁有更多資料(例如尺寸和紋理資訊)。
Calc 資訊是關於計算幀的背景顏色和每個精靈的新位置所需的時間。啟用 JIT 時,Java (Canvas) 測試和本機 (Open GL) 測試之間的計算時間相當,但在停用 JIT 時,Java 會遭受嚴重損失。
閱讀更多信息