2010-05-23 62 views
14

我正在研究編寫Android遊戲,我很難擁有Android設備。對於那些擁有設備的人來說,仿真器上的性能如何與真實的設備性能相關聯?我對圖形相關的任務特別感興趣。Android仿真器性能與真實設備性能相比如何?

這顯然取決於運行模擬器的機器和有問題的特定設備,但我在這裏說粗略的數字。

這個問題是duplicate,但由於該帖子嚴重過時,我認爲它現在是不相關的。

回答

13

一般來說,仿真器比CPU和GPU任務中的設備慢得多。這至少有兩個方面的原因:

  1. 模擬器運行ARM的操作碼,將它們轉換成等價的x86指令,這是緩慢的
  2. 設備(通常)圖形加速器,而仿真環境中並非如此,但無論視頻卡你運行模擬器的機器上

爲了說明問題,我使用一塊相當不錯的顯卡在英特爾四核2.66GHz上做Android工作。對於在設備上正常工作的視頻,我可以有時讓他們在模擬器中播放。

雖然在「磁盤」I/O處,模擬器比設備快。當您在模擬器上寫入「flash」時,假設您沒有使用SSD,則您正在寫入可能駐留在常規硬盤驅動器上的磁盤映像文件。實際上,在設備上寫入閃存的速度可能會大大降低 - 在上週的Google I | O 2010大會上,Brad Fitzpatrick引用了高達200ms的高峯來寫入單字節閃存。而且,Android,Flash和yaffs2文件系統的組合顯然會導致設備在閃存填充時閃存I/O逐漸變慢。因此,他的建議是在後臺線程中寫入任何閃存,而不是主應用程序線程,在那裏它可以綁定用戶界面並導致一個「janky」應用程序。

(顯然,「janky」是一個技術術語... :-)

順便說一句,當它在網上顯示出來,絕對看布拉德在YouTube上的演示文稿。有時可能有點難以跟上,因爲他說得很快,但是它充滿了有關表演的有用花絮。

+0

謝謝,這是有用的信息。在同樣的問題上,模擬器是否使用與設備相同的虛擬機?特別是,我應該期待類似的GC活動嗎? – uj2 2010-05-23 20:59:15

+0

如果用「VM」表示運行用Java編寫的應用程序的Dalvik VM,那麼是的。就GC活動而言,潛在差異的唯一來源是應用程序堆最大大小。老設備,我認爲模擬器,限制你到一個16MB的堆。具有更多RAM和更大屏幕的較新設備支持24MB堆。目前還不清楚是否有一種方法可以控制模擬器中的應用程序堆大小。無論如何,您可能都希望對較小的堆大小進行測試。 – CommonsWare 2010-05-23 21:09:32

+0

我在模擬器上有代碼的運行時問題,一個tabactivity需要8-10秒來加載模擬器,在真實設備上花費1-2秒,幾乎看不到滯後。 – Pentium10 2010-05-23 21:09:36

1

如上所述,將ARM操作碼轉換爲x86是模擬器滯後的主要原因。

根據我的經驗,模擬器確實非常慢,而且非常不能代表設備,尤其是Snapdragon處理器的預期功能。

即使模擬器中的非常基本的應用程序(我正在談論帶有幾個TextView的LinearLayout)也需要一段時間來加載和執行活動。

然而,大多數情況下,滯後似乎是最初的。我的意思是,如果您在模擬器中滾動列表,則需要第一時間才能識別該動作,並且一開始會有點生澀,但之後會變得更加平滑。

總之,我不會建議開發一款遊戲,除了初始編程,調試以及可能瞭解活動的佈局外,還可以使用仿真器進行其他任何操作。沒有真正的設備,你就不會有任何可玩性的想法。



P.S.不要忘記在不同版本的Android上測試你的遊戲,並尋找在不同版本的Android遊戲中遇到的常見問題。

+0

我希望他們像Palm那樣編譯x86的模擬器,儘管他們的手機使用的是針對ARM處理器編譯的webOS版本。使用Android也無法輕鬆完成這項任務嗎? – Vitaly 2010-06-17 09:27:19

2

檢查這個不錯article它顯示瞭如何將仿真器的CPU速度與使用BogoMIPS的設備的CPU速度進行比較。

相關問題