Android uygulamaları derlenmiş yerine yorumlanır. Bu onları çalışma zamanında iOS uygulamalarından daha yavaş yapar mı?
Android uygulamaları derlenmiş yerine yorumlanır. Bu onları çalışma zamanında iOS uygulamalarından daha yavaş yapar mı?
Yanıtlar:
Java Android'de yorumlanmadı. Android uygulamaları geliştirici tarafından bytecode için derlenir . Bytecode, programın küçük bir temsilidir: programcı tarafından yazılan kaynak kodundan daha küçük fakat yine de CPU tarafından doğrudan çalıştırılamaz. Ölü kod kaldırma gibi bazı optimizasyonlar bu aşamada yapılabilir.
Uygulamayı bir cihaza yüklediğinizde, Dalvik JVM, bayt kodunu tıpkı çalıştırmak üzere olduğu gibi, yerel çalıştırılabilir kodda derler. Bu tam zamanında bir derleme. Program derlenmeyi beklerken kısa bir yavaşlamaya neden olur, ancak daha sonra genel performans kodu yoktur, çünkü kod yerel çalıştırılabilir kod için derlenmiştir.
Geliştiricinin bilgisayarında ön derleme yapmak yerine, bu şekilde yapmanın bazı performans avantajları vardır. Uygulama, donanım özelliklerinden yararlanarak ve performans özelliklerini kullanarak telefondaki belirli bir CPU için derlenebilir. Örneğin, eğer CPU destekliyorsa, donanım kayan nokta işlemlerini kullanabilir. Ek olarak, akıllı bir JIT derleyicisi (kuşkusuz Dalvik bu kadar akıllı değildir) programın çalışma şeklini izleyebilir ve programın gerçek kullanımda kullanılmasına bağlı olarak optimizasyonlar yapabilir. Ortamınızda, telefonunuzda hangi seçeneklerin açıldığını ve kapatıldığını gördükten sonra kodu daha iyi dal ipuçlarıyla derleyebilir. Bir ön derleyici kullanmak için bu bilgilere sahip değil.
Dalvik , JITT derlemesinin sakıncalarını azaltmak için Dalvik önbelleğini ve diğer teknikleri kullanır . Android L ve daha sonra, ART için yeni JVM, bir tamamen JIT değiştirir öncesinde-of-time derleyici. Bu, uygulama yüklendiğinde JIT'in avantajlarından en iyi şekilde yararlanmak için, uygulama yüklendiğinde byte kodunu yerel yürütülebilir kodla derler.
Android uygulamalarının tamamen Java'dan oluşmadığını unutmayın. Geliştiriciler , özellikle oyunlar için uygulamanın kritik performans gösterdiği kısımları için, uygulamalarının tümünü veya bir kısmını C veya C ++ dilinde yazacak NDK'ye sahiptir. OpenGL ve Renderscript gibi özel amaçlı arayüzler, programcıların bazı hesaplama türleri için GPU ve SIMD işlemcisi gibi özel donanımdan yararlanmalarını sağlar.
Yani gerçekten, sorunuza basit bir cevap yok. Ön derleme yerine JIT kullanmak bazı şeyleri daha hızlı, bazılarını daha yavaş yapar. İşletim sisteminin genel performansının sadece bir kısmı.
Bu geniş bir soru olduğu için işte geniş bir cevap.
"Android uygulamaları yorumlandığından iOS uygulamaları android uygulamalarından daha hızlı mı?"
İlk önce iOS uygulamaları android uygulamalarından "daha hızlı" değildir.
İkincisi, konuyla ilgili "Android uygulamaları Yorumlanır." Bu, "15 yıl önce" gibi, bilgisayar hakkında söyleyeceğiniz bir şey: yukarıdaki tartışmadan da anlaşılacağı gibi, durum bugün çok daha karmaşıktır; tamamen yeni teknolojiler öne çıkmıştır. “Derlenmiş” yorumundan daha hızlı! 20 yıl önce makine koduyla karşılaştırıldığının farkındaydı; İşler o kadar ilerledi ki, sorun bugün "iOS V Android" e gerçekten net bir şekilde uygulanamıyor.
Üçüncüsü, mobil programlamada bu tür düşünceleri tamamen bataklıktan başka konular da var. Yere sadece bir örnek, mobil programcılar, büyük kayan görüntü listelerini, tembel yükleme ve benzeri sorunları işlemek için kendilerini knock out. İki işletim sisteminin ve çeşitli popüler kütüphanelerin, bu kritik meseleleri nasıl ele aldıkları, genellikle başka meseleleri ele geçiriyor.
Dördüncüsü, cep telefonlarındaki sadece bir tane daha zorlayıcı konu, grafik yonga setinin sorunları ve bunun yazılımla, OpenGL vb. Örneğin, Apple bu problemlerle ilgili olarak “Metal” i çağıran bir sistemle çıkıyor ve Android bu alanda kendi “şeyleriyle” çıkıyor. Grafik boru hattı etrafındaki bu sorunlar, uygulamaların elinizde nasıl "hissettiği" için çok önemlidir.
Sorunuza verilen kısa cevap, "derlenmiş V. tercüman" dır, temelde bildiğiniz güncel olmayan bir tartışma noktasıdır?
(Ayrıca, özellikle bir Not3'ü bir iPhone'dan daha "yavaş" bulmuyorum. Ayrıca, bunların bazıları saf eserdir - ucuz Android telefonlar vardır: düşük performanslı iPhone'lar bulunmadığından bazı insanlar yanlış olabilir. bundan fikirler.)
Çünkü, yorumlanmış uygulamalar her zaman yavaş oldukları anlamına gelmez. Bazen derlenmiş olanlara göre daha güçlü ve dinamiktirler. Derlenen uygulamadaki tüm kodlar bir kez derlendiğinde ve çıktılar kitaplıklar veya çalıştırılabilir formlar şeklinde tutulduğundan, yorumlanmış bir dilde bir defa rastgele çalıştırma sırasını değiştirebilir. Böylece, geliştiriciye geliştiriciye ve programlama yoluna bağlı olduğunu söyleyebilirim.
Ancak, Java (Android programlama dili) yorumlanmamıştır, ancak JIT derlenir. Bu, Android programlarının çalıştırılmadan hemen önce derlenmesi ve iOS'nin Hedef C'sine oldukça benzer bir performans göstermesi anlamına geliyor.
Daha yakın bir zamanda, Android'in ART çerçevesi uygulamaları önceden derler, iOS uygulamaları ile aynı şekilde çalıştırılırlar. Başka bir deyişle, Android'in bir sonraki sürümü muhtemelen iOS kadar hızlı olacak.
Güncelleştirme
Programlama dilleri genellikle iki kategoriden birine girer: Derlenmiş veya Yorumlanmış. Derlenmiş bir dilde, girdiğiniz kod çalıştırılabilir bir dosya olarak kaydedilmeden önce makineye özgü talimatlara indirgenir. Yorumlanan dillerle, kod girdiğiniz biçimde kaydedilir. Derlenmiş programlar, genellikle yorumlanmış programlardan daha hızlı çalışır, çünkü yorumlanmış programların çalışma zamanında makine talimatlarına indirgenmesi gerekir. Ancak, yorumlanmış bir dille, derlenmiş bir dilde yapılamayan şeyler yapabilirsiniz. Örneğin, yorumlanmış programlar çalışma zamanında işlevler ekleyerek veya değiştirerek kendilerini değiştirebilir. Ayrıca, yorumlanmış bir ortamda uygulamalar geliştirmek genellikle daha kolaydır, çünkü küçük bir bölümü her test etmek istediğinizde uygulamanızı yeniden derlemeniz gerekmez.