Performa yang terkait dengan Array dan Objek dalam JavaScript (khususnya Google V8) akan sangat menarik untuk didokumentasikan. Saya tidak menemukan artikel komprehensif tentang topik ini di mana pun di Internet.
Saya memahami bahwa beberapa Objek menggunakan kelas sebagai struktur data yang mendasarinya. Jika ada banyak properti, terkadang diperlakukan sebagai tabel hash?
Saya juga memahami bahwa Array terkadang diperlakukan seperti C ++ Array (yaitu pengindeksan acak cepat, penghapusan lambat, dan pengubahan ukuran). Dan, di lain waktu, mereka diperlakukan lebih seperti Objek (pengindeksan cepat, penyisipan / penghapusan cepat, lebih banyak memori). Dan, mungkin terkadang mereka disimpan sebagai daftar tertaut (yaitu pengindeksan acak yang lambat, penghapusan / penyisipan cepat di awal / akhir)
Apa kinerja yang tepat dari pengambilan dan manipulasi Array / Objek dalam JavaScript? (khusus untuk Google V8)
Lebih khusus lagi, apa dampak kinerja:
- Menambahkan properti ke Objek
- Menghapus properti dari Objek
- Mengindeks properti di Objek
- Menambahkan item ke Array
- Menghapus item dari Array
- Mengindeks item dalam Array
- Memanggil Array.pop ()
- Memanggil Array.push ()
- Memanggil Array.shift ()
- Memanggil Array.unshift ()
- Memanggil Array.slice ()
Artikel atau tautan apa pun untuk detail lebih lanjut akan dihargai juga. :)
EDIT: Saya benar-benar bertanya-tanya bagaimana array dan objek JavaScript bekerja di bawah tenda. Juga, dalam konteks apa mesin V8 "tahu" untuk "beralih" ke struktur data lain?
Misalnya, saya membuat array dengan ...
var arr = [];
arr[10000000] = 20;
arr.push(21);
Apa yang sebenarnya terjadi disini?
Atau ... bagaimana dengan ini ... ???
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...
}
Untuk array konvensional, kinerjanya akan sangat buruk; sedangkan, jika LinkedList digunakan ... tidak terlalu buruk.