nds uygulamasının, tüm bayt örneklerini tamsayılarla değiştirdiğimde biraz daha hızlı çalıştığını fark ettim. tüm çevrimiçi örnekler mümkün olduğunda u8/u16 örneklerini koydu. Bunun neden böyle olduğuna dair belirli bir neden var mı?Niçin tamsayılar NDS'deki bayttan daha hızlı işliyor?
cevap
Nintendo DS'nin kullandığı ana işlemci, 32 bit işlemci olan ARM9'dur.
Referans: http://en.wikipedia.org/wiki/ARM9
Genellikle, CPU, bu durumda 32 bit olarak word sizes'da işlem gerçekleştirir. İşlemlerinize bağlı olarak, baytları tamsayıya çevirmek veya tersine çevirmek, işlemcide ek yüke neden olabilir. Bu dönüştürme ve 32 bit tamsayılar dışındaki değerler için olası talimat eksikliği, hız eksikliğine neden olabilir.
Daniel Li'nin söylediklerine tamamlayıcı olarak, ARM platformlarındaki bellek erişimi kelimesi hizalı olmalıdır, yani bellek getirileri 32 bitten fazla olmalıdır. Bir bayt değişkeninin bellekten getirilmesi, ilgili baytı içeren bütün sözcüğün getirilmesini ve işlemci kaydının en az önemli bitlerine sığdırmak için gerekli bit-bilge işlemlerin gerçekleştirilmesini ima eder.
Bu ek değişkenler, değişkenlerinizin gerçek hizalamasını bildiği için derleyici tarafından otomatik olarak yayılır.
Belirli bir kod örneği verebilir misiniz? Örneklerde yapılarda 8/16 bit değişkenleri beyan ettiğinizi görüyorsunuz ve bunun yerine onları yerliler olarak kullanıyorsunuz. –