Alıntı (zekeriyadurmus):
> sınıfları da structlara çevirince oldukça hız artışı sağladım
Senin için etkili miydi bilmiyorum ama D'nin sınıflarıyla ilgili bir özelliği hatırlatmakta yarar var. Bunu pek konuşmuyoruz çünkü doğrusu ne kadar önemli olduğuna ben de ancak DConf sırasında uyandım.
C++'ın aksine, D'de sınıf üye işlevleri 'virtual' varsayılıyor. Bu da, virtual olması gerekmeyen işlev çağrılarının bile işlev tablosu (vtbl) üzerinden geçmesine ve dolayısıyla iki düzeyli hız kaybına neden olabiliyor: hem gereksiz bir atlama oluyor, hem de vtbl işlemcinin ara belleğinde olmadığında dış belleğe erişime neden oluyor.
O yüzden, D programcısı her sınıf işlevini öncelikle 'final' olarak işaretlemeli ve ancak gerçekten 'virtual' olması gerektiğinde 'final'ı kaldırmalı.
class C
{
int i;
// Alt sınıf tarafından tekrar tanımlanacak bir işlev değil:
final void kendiÖzelİşlemlerim()
{}
// Normal arayüz işlevi:
void foo()
{}
}
Ali
--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]