Hepimiz Android'i seviyoruz. Ancak Android ve IOS'u ele aldıysak, IOS'ta performansın çok daha akıcı göründüğünü fark ettik. Bugün sorusunu çözeceğim Android neden IOS kadar akıcı değil?
Cevap Google mühendisi Andew Munn tarafından Google+ aracılığıyla veriliyor:
GC duraklamaları için değildirler. Bunun nedeni Android'in bayt kodunu yürütmesi ve iOS'un bunun yerine yerel kodu yapması değildir. Bunun nedeni, iOS'ta tüm arabirimlerin, bazı eylemler durdurulduğunda ortaya çıkan gerçek zamanlı olarak yüksek önceliğe sahip olan özel işlemlerde işlenmesidir. Bununla birlikte, Android, oluşturma modelinin ana işlemde normal önceliğe sahip olduğu ve her şeyin daha az akıcı görünmesine neden olduğu geleneksel bir bilgisayar tarzında çalışır.
Bunun bir örneği, örneğin internette geziniyorsanız, IOS'ta sayfayı yüklemenin yarısına gelindiğinde sayfanın yüklenmesini durduracak ve parmağınızı bıraktığınızda yeniden yüklenecektir. Android'de, siz sayfa içinde dolaşırken aynı anda yükleme işlemi de biter.
Bu, örneğin çift çekirdekli Android cihazlarda gerçekleşmez, çünkü her çekirdek bir şeyi yapmaktan sorumludur (sayfayı yüklemek ve ekran arayüzünü yüklemek).
Elbette bu basit bir açıklama. Konuyla ilgili daha bilgili olanlar için size tam bir açıklama veriyorum (zaten donanım hızlandırma, kod optimizasyonu, öncelikler vb. içerir) tarafından yapılan Ricardo Galli:
Android'deki gecikme sorunu temelde bir zamanlayıcı sorunudur. Android, "çoklu görev" (aslında "çoklu programlama") ile çok daha iyi çalışıyor çünkü bir Linux ve süreç yönetimine neredeyse hiç dokunmamışlar. Bu sorunu çözmek için zamanlayıcıyı geliştirmeniz yeterlidir. Kesinlikle üzerinde çalışıyorlar ve aslında büyük ölçüde iyileştirildi.
Android'in sahip olduğu diğer bir sorun, her işlemin ortak kitaplıkların belleğini (Linux / UNIX doğal olarak yaptığı gibi) ve yüksek düzeyde optimize edilmiş kodu paylaşarak optimize edilmiş ayrı bir Java sanal makinesi olmasıdır.
Android'deki programlar, sanal makine tarafından yorumlanan ara koddadır, iOS'ta ise işlemciye özgüdür (bu, hız avantajları, ancak tek bir donanım türü ile çözülen taşınabilirlik ve çeşitlilik dezavantajları sağlar) . Elbette iyileştirilebilecek şeyler var, ancak bu dezavantaj, işlemcilerin ve özellikle önbelleğin hızının artmasıyla gittikçe azalmaktadır.
Zamanlayıcılar kesin bir bilim değildir, bu oldukça telaşlı bir şeydir ve deneyimle öğrenilen sezgiselleri tespit edip ekleyebileceğimiz birçok "aşırı durum" (köşe vakaları) vardır.
Sorunun ortadan kalkması muhtemeldir (üç temel nedenden dolayı, programlayıcıdaki gelişmeler, Java sanal makinesinin yönetimi ve donanımın iyileştirilmesi), bu noktada söylenemeyen şey, her zaman iyi olun ve bu özgün bir tasarım problemidir
Ama işte Android ile ilgili en iyi şey, mühendislerin kendileri bunu kabul ediyor ve onu geliştirmek için çok çalışıyorlar. Öyle ki, yeni ICS versiyonunda ilgi odağı oldu ve kesinlikle akıcılık seviyesinde (eğer aşmazsa) yetişecek.