JavaScript'teki Diziler ve Nesnelerle ilişkili performansı (özellikle Google V8) belgelemek çok ilginç olurdu. İnternetin hiçbir yerinde bu konuyla ilgili kapsamlı bir makale bulamıyorum.
Bazı Nesnelerin temel veri yapıları olarak sınıfları kullandığını anlıyorum. Çok fazla özellik varsa, bazen bir karma tablo muamelesi görür?
Ayrıca Dizilerin bazen C ++ Dizileri gibi ele alındığını da anlıyorum (yani hızlı rastgele indeksleme, yavaş silme ve yeniden boyutlandırma). Ve diğer zamanlarda, daha çok Nesneler gibi işlem görürler (hızlı indeksleme, hızlı ekleme / çıkarma, daha fazla bellek). Ve belki bazen bağlantılı listeler olarak saklanırlar (örn. Yavaş rastgele indeksleme, baştan / sondan hızlı çıkarma / ekleme)
JavaScript'te Dizi / Nesne geri alma ve manipülasyonlarının kesin performansı nedir? (özellikle Google V8 için)
Daha spesifik olarak, performansa etkisi:
- Bir Nesneye Özellik Ekleme
- Nesneden bir özelliği kaldırma
- Bir Nesnedeki bir özelliği dizine ekleme
- Bir Diziye bir öğe ekleme
- Diziden bir öğe çıkarma
- Bir Dizideki bir öğeyi indeksleme
- Array.pop () çağırılıyor
- Array.push () çağırılıyor
- Array.shift () çağırılıyor
- Array.unshift () çağırılıyor
- Array.slice () çağırılıyor
Daha fazla ayrıntı için herhangi bir makale veya bağlantı da takdir edilecektir. :)
DÜZENLEME: JavaScript dizilerinin ve nesnelerinin başlık altında nasıl çalıştığını gerçekten merak ediyorum. Ayrıca, V8 motoru hangi bağlamda başka bir veri yapısına "geçiş yapmayı" biliyor?
Örneğin, bir dizi oluşturduğumu varsayalım ...
var arr = [];
arr[10000000] = 20;
arr.push(21);
Burada gerçekten neler oluyor?
Ya da ... buna ne dersin ... ???
var arr = [];
//Add lots of items
for(var i = 0; i < 1000000; i++)
arr[i] = Math.random();
//Now I use it like a queue...
for(var i = 0; i < arr.length; i++)
{
var item = arr[i].shift();
//Do something with item...
}
Geleneksel diziler için performans korkunç olurdu; oysa, bir LinkedList kullanılmışsa ... o kadar da kötü değil.