為什麼 Xcode 的 iPhone 模擬器的啟動速度和運行速度都比 Android 開發套件的模擬器快很多?


iOS 的是 Simulator,Android 的是 Emulator,看看這兩個詞的區別你就知道了。

下面是Google的詳細闡述。

http://www.google.com.hk/#hl=zh-CNsource=hpq=simulator+emulatoroq=simulator+emulatoraq=faqi=g2aql=gs_sm=egs_upl=1635l8634l0l8818l20l20l1l7l7l0l231l2107l0.10.2l12l0bav=cf.osbfp=dfa267f03016724biw=1365bih=609

我是真的很討厭標記這個功能。

問題有兩種,一種是拋磚引玉企圖引發群體思考的,一種是問者尋求答案的。

顯然對於後者,我們需要的是那種捅破窗戶紙的快感,而不是絮絮叨叨的啰嗦半天。尋求答案的問題其實只要點破那一點就行了,就像捅破窗戶紙,這樣就已經節約了問者的大部分搞清楚這個問題所花的時間了。像這樣的問題,點破關鍵點後,在知乎這裡詳細闡述半天,根本就不如問者直接 Google 到的結果簡單明了快速。

@知乎的同學們,如果你們看到了,希望能對你們設計功能有所幫助。


iphone模擬更像wine,它是運行環境。也就是說你的源代碼編譯成了x86的可執行格式,是原生的。

android模擬器是qemu的虛擬機,如果以模擬arm/mips的模式運行,效率極低,它最接近蘋果性能的模式是帶英特爾vt的處理器,配合一個可以在sdk里下載的組件和x86模擬器,和gpu加速,這個時候就是一個有處理器虛擬化支援的虛擬機。(sunspider居然跑了300分)。

然而只有arm版模擬器提供了google apps開發的支持


iOS 與 Mac OS X層次相似,應該是OS X的簡化版。而Android 模擬器是基於QEMU開發的, 為了跨各種平台,必然損失一些性能。


Xcode優化的更好,而安卓開發環境是Ecplise,在上面安裝的ADT和安卓SDK,可能是Ecplise本身設計的簡單,而且安卓模擬器底層是Java,通過JDK的編譯在Win上工作,Java的跨平台性很好,但是需要編譯,效率低,因此速度慢些。

但是現在可以提供英特爾的一項技術,安裝一個插件之後,安卓模擬器的速度和真機是差不多的。


推薦閱讀:

TAG:iOS | Xcode | Android | 模擬器 |