Bazı sınıflar foo < handle
ve bar < foo
, baz < foo
ve belki de qux < foo
varsayalım. Bir hücre dizisi olarakPerformans, nesnelerin hücre dizileri veya heterojen diziler için daha iyi olan nedir?
: Ben bu nesnelerin bir diziyi saklayabilir birkaç yolu vardır
A = {foo bar baz qux} % A(1) would be a cell, A{1} gives me a foo object
R2011a ile başlayarak, ben
foo <
matlab.mixin.Heterogeneous
olun ve sonra bir dizi directy inşa edebilirsiniz:A = [foo bar baz qux] % A(1) directly gives me a foo object
Ben ilk ziyade ikinci yöntemi kullanmak daha iyi olurdu bir bakım perspektifinden, gördüğüm, oerişme hakkında belirsizliği kaldırır bu şekilde. Yani, hücre dizininin (A(1)
vs foo
nesnesi A{1}
, A(1)
içinde yaşayan) dereferans elemanlarına ihtiyaç duyduğumuzda.
Ama diğerine karşı bir sözdizimi kullanmak için herhangi bir bellek veya performans cezası (veya parası) var mı?
Performanstaki farkı görebilseydim şaşırırım. Her iki nesneyi oluşturun ve kendi boyutlarını görmek için "whos" yapın. – Floris
@Floris Yukarıdakileri yaptım ve heterojen dizi uygulaması 104 bayt alır gibi görünüyor ve hücre dizisi bir kuyruklu 864 kadar sürer! Bununla birlikte, bir 'foo' nesnesini tek başına tanımlamak da 104 bayt alır. Yani sanırım heterojen uygulama içinde neler olup bittiğini anlamıyorum ... –
Matlabın laneti.Kimse perdenin arkasında ne olup bittiğini gerçekten bilemez ve matlab insanlara sırlarını anlatmakla hiç ilgilenmemiştir. – patrik