由@Elliott Frisch給出的answer是100%正確的,並且涵蓋了對執行速度有影響的所有內容。
但是,我認爲強調軟件差異以及Android上的運行時實現與通常在桌面上使用的實現完全不同是非常重要的。
在桌面上,Java代碼被編譯爲java字節碼然後由Java Virtual Machine執行。該虛擬機通常針對桌面運行的任何硬件和操作系統的速度進行優化。
在Android側相同的Java代碼也編譯爲字節碼,但它是非常不同的,並且是由在Android特定Dalvik運行時,它是(通常)爲效率(省電等)優化的執行,而不是純粹的速度。
Android(L)的下一個版本設置爲用一個更加快速的版本替換這個運行時(稱爲ART (Android Runtime)) - 它將使用AOT(AOT)編譯代替Just-In-Time (JIT),這應該加速執行。
考慮到所有這些,可能會認爲,鑑於完全相同的硬件,桌面和Android之間的執行速度可能仍然存在差異。事實上,對於在不同的桌面操作系統(Windows vs Linux vs OSX)和不同的Java VM上執行相同的Java代碼,情況也是如此。
底線是,儘管硬件在執行速度中扮演着最重要的角色,但運行時環境對代碼的執行速度有着非常重要的影響。
你的第二點完全不正確。桌面代碼通常運行在標準的JRE(Java Runtime)中,而Android運行稱爲Dalvik的自定義運行時(以及未來的ART - Android運行時)。這也會對執行速度產生巨大影響,因爲它們是針對不同的設計目標而量身定製的。 – free3dom 2014-08-30 08:54:51