İş için doğru aracı kullanın.
Programınız istisnalar atabiliyorsa, kodunuzun istisna olduğunun farkında olun. Akıllı işaretçiler kullanarak, RAII ve 2 fazlı yapımdan kaçınmak iyi bir başlangıç noktasıdır.
Açık bir mülkiyet semantiği olmayan döngüsel referanslarınız varsa, bir çöp toplama kütüphanesi kullanmayı veya tasarımınızı yeniden düzenlemeyi düşünebilirsiniz.
İyi kütüphaneler, konsepte tip değil kodlama yapmanıza izin verir, bu nedenle çoğu durumda kaynak yönetimi sorunlarının ötesinde ne tür bir işaretçi kullandığınız önemli değildir.
Çok iş parçacıklı bir ortamda çalışıyorsanız, nesnenizin potansiyel olarak iş parçacıkları arasında paylaşılıp paylaşılmadığını anladığınızdan emin olun. Boost :: shared_ptr veya std :: tr1 :: shared_ptr komutunu kullanmayı düşünmenizin ana nedenlerinden biri, iş parçacığı güvenli bir başvuru sayımı kullanmasıdır.
Referans sayımlarının ayrı tahsis edilmesinden endişe ediyorsanız, bunun çevresinde birçok yol vardır. Boost :: shared_ptr kütüphanesini kullanarak referans sayaçlarını tahsis edebilir ya da nesneyi ve referans sayısını tek bir tahsis içinde tahsis eden boost :: make_shared (tercihim) özelliğini kullanabilir, böylece çoğu önbellek sorununu gideririz. En yüksek seviyede nesneye bir referans tutarak ve nesneye doğrudan referanslar geçirerek, referans sayısını performans kritik kodunda güncellemenin performans vuruşunu önleyebilirsiniz.
Paylaşılan sahipliğe ihtiyacınız varsa ancak referans sayma veya çöp toplama maliyetini ödemek istemiyorsanız, değişmez nesneler veya yazma deyiminde bir kopya kullanmayı düşünün.
En yüksek performans kazanımlarınızın uzağa ve uzağa bir mimaride, ardından bir algoritma düzeyinde olacağına ve bu düşük seviyeli endişelerin çok önemli olmasına rağmen, sadece önemli sorunları ele aldıktan sonra ele alınmaları gerektiğini unutmayın. Önbellek özü düzeyindeki performans sorunlarıyla uğraşıyorsanız, söz konusu başına göstericilerle hiçbir ilgisi olmayan, aynı şekilde sahte paylaşımın farkında olmanız gereken birçok konunuz vardır.
Akıllı işaretçileri yalnızca dokular veya modeller gibi kaynakları paylaşmak için kullanıyorsanız, Boost.Flyweight gibi daha özel bir kütüphaneyi düşünün.
Yeni standart kabul edildiğinde, semantiği hareket ettirin, referansları değerleyin ve mükemmel iletme pahalı nesnelerle ve konteynerlerle çalışmayı çok daha kolay ve verimli hale getirecek. O zamana kadar işaretçileri, auto_ptr veya unique_ptr gibi yıkıcı kopya semantiklerine sahip bir Konteynerde (standart konsept) saklamayın. Boost.Pointer Container kitaplığını kullanmayı veya paylaşılan sahiplik akıllı işaretçilerini Konteynerler'de depolamayı düşünün. Performans kritik kodunda, her ikisinden de kaçınmayı Boost.Intrusive gibi izinsiz konteynerlerden yana düşünebilirsiniz.
Hedef platform kararınızı gerçekten fazla etkilememeli. Gömülü cihazlar, akıllı telefonlar, aptal telefonlar, PC'ler ve konsollar tüm kodu çalıştırabilir. Sıkı bellek bütçeleri ya da yükleme sonrasında / sonrasında dinamik ayırma olmaması gibi proje gereksinimleri daha geçerli kaygılardır ve seçimlerinizi etkilemelidir.