| |
 | Posted by Ali Çehreli (acehreli) in reply to İbrahim | Permalink Reply |
|
Ali Çehreli (acehreli) 
Posted in reply to İbrahim
| shared_ptr'dan bahsettiğimizi varsayıyorum.
Öncelikle, aynı nesneyi gösteren kaç adet akıllı işaretçi kopyası bulunduğunu sayan bir sayaca ihtiyaç var. Bu sayaç doğal olarak bir yer tutuyor. Bunun ötesinde, normalde sayaç bile dinamik olarak ayrılıyor. Dolayısıyla, shared_ptr aslında şöyle iki üyeden oluşur:
// (Sözde kod)
template <typename T>
struct shared_ptr {
size_t * sayaç;
T * nesne;
};
Sayaçla ilgili olan shared_ptr işlemleri sırasında nesneden farklı olan o adrese de erişilmesi gerekir. Bu da işlemci ara belleklerine (CPU cache) biraz daha fazla yük getirir. Örneğin, nesnenin bulunduğu bölge ara bellekte olsa bile sayacın bulunduğu bölge ara bellek dışında olabilir. Bu yüzden onun yüklenmesi zaman alacaktır.
Not: make_shared() kullanılırsa sayaç dinamik bellekten ayrılmaz.
Özet:
Ali
--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]
|