STL mobil cihazlar için yeterince verimli mi?


9

İOS ve Android NDK'da mobil oyun geliştirme söz konusu olduğunda, bazı geliştiriciler kendi C ++ kapsayıcılarını yazarken, diğerleri STL'nin mobil oyun geliştirme için yeterli olmaktan daha fazla olduğunu iddia ediyor (Örneğin, iPhone 3D Programlama'nın yazarı Objective- Onun savunmasında STL'nin Amaç-C'den daha yavaş olmamasıdır.

Daha sonra C ++ 'dan tamamen vazgeçen ve C dilinde (C89 / C90) tamamen (veya çoğunlukla) oyunlar geliştiren mobil geliştiriciler de var.

Her yaklaşımın faydaları ve dezavantajları nelerdir?


4
STL'ye karşı ana eleştiriler, öngörülemeyen bellek ayırma düzenleri ve derleyici desteğidir - her iki sorun da bir STL alternatifi, örneğin EASTL veya STLPort kullanılarak çözülebilir.
Raphael R.

1
Bu sorunun birkaç cevabı: gamedev.stackexchange.com/questions/268/… mobil platformlara dokunun ve size cevabınızı vermelisiniz.
Tetrad

5
Çoğu insanın C + 'yı mobil platformlarda "terk etmesinden" (daha önce hiç kullanmamak gibi) şüpheleniyorum, STL hakkında daha az ve Objective-C ++' nın garipliği hakkında daha fazla şey (ve genellikle Apple'ın araç zincirinde geciken C ++ desteği).

Asıl soru şu ki, daha iyi yazabilir misin? STL'yi anlamak daha iyi; ve istediğiniz şeyi yapmadığı durumlarda, istediğiniz davranışı uygularsınız.
deceleratedcaviar

Yanıtlar:


6

Önce size bir şey söyleyeyim. C ++, Objective-C çağrılarından daha hızlıdır. Objective-C, ileti geçiş sistemleri kullanır, böylece C ++ ile karşılaştırıldığında bazı çalışma zamanı yükü olacaktır. Buradaki bazı karşılaştırmalara bir göz atın .

İOS genel "uygulama" geliştirmesine gelince, performans bir dereceye kadar çok ölçüt olamayacağından Objective-C yerleşik işlevlerini kullanmak mantıklıdır. Ancak oyun geliştirmede bu sonuçları dikkate almamız gerekiyor.

Önceki projem (Robokill) üzerinde çalışırken, kodun çoğunu düz C çağrıları ile gerektiğinde optimize ettik (Objective-C parçacıklar sınıfımızı bir C ++ sınıfına dönüştürdük). Veya doğrudan C çağrıları için Objective-C çalışma zamanı işlevlerini kullanabilirsiniz.

Sorunuza gelince, işte cevabım: evet, STL amacı için iyi optimize edilmiş . Uygulama kodu çok okunabilir olmasa da, uygulamayı bir kez kontrol etmek ilginçtir.

Ancak, işlev işaretleyicilerini önbelleğe alarak ve Objective-C çalışma zamanı ile çağrı yaparak Objecive-C kodunu bir dereceye kadar optimize edebiliriz.

Bu yardımcı olur umarım!

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.