Rasgele büyük nesneleri tutmak için, boost::any
/std::any
kesinlikle nesneler için yığın alanı ayırmaya ihtiyaç duyar. Bununla birlikte, boyutu bir işaretçiye (int,char,bool,...
) daha az veya eşit olan küçük türler için, any
, bunun yerine değeri yerinde veya başka bir yerinde bellekte saklayabilir ve yığın alanını ayırmaz. Ama uygulama bunu yapıyor mu?Boost :: any/std :: herhangi bir mağazada küçük nesneler var mı?
any
'da küçük türleri depoladığım ve bazen yalnızca string
s gibi daha büyük türlerde sakladığım bir senaryo var. Kod oldukça sıcak ve bu yüzden soruyu soruyorum. Optimizasyon yapılmazsa, küçük türleri yerinde depolayan kendi uygulamasından daha iyi olabilirim.
"kod parçası olacak kadar küçük bir şablon yapma uygulanması maliyetidir oldukça sıcak"? İyi performans göstermediğini mi kastediyorsun? Optimizasyonları derlediniz mi? Bu ekstra bellek erişiminin oyunun performans değiştiricisi olduğundan şüpheleniyorum. – mascoj
['libC++' trunk] (https://github.com/llvm-mirror/libcxx/blob/master/include/any) [küçük nesne] var (https://github.com/llvm-mirror/libcxx/ std :: any' için blob/master/include/any # L132) optimizasyonu. Herhangi bir makul STL uygulaması için aynı olması gerektiğinden şüpheleniyorum ... – WhiZTiM
@mascoj "hot code", geri kalanından önemli ölçüde daha sık yürütülen bir kod kısmıdır ve bu nedenle bir darboğaz haline gelmeye en yatkındır. – Quentin