ประสิทธิภาพที่เกี่ยวข้องกับ Arrays และ Objects ใน JavaScript (โดยเฉพาะ Google V8) น่าสนใจมากสำหรับเอกสาร ฉันไม่พบบทความที่ครอบคลุมเกี่ยวกับหัวข้อนี้ที่ใดก็ได้บนอินเทอร์เน็ต
ฉันเข้าใจว่าออบเจ็กต์บางตัวใช้คลาสเป็นโครงสร้างข้อมูลพื้นฐาน หากมีคุณสมบัติจำนวนมากบางครั้งถือว่าเป็นตารางแฮช?
ฉันเข้าใจด้วยว่าบางครั้ง Arrays จะถือว่าเหมือนกับอาร์เรย์ C ++ (เช่นการจัดทำดัชนีแบบสุ่มอย่างรวดเร็วการลบและการปรับขนาดอย่างช้าๆ) และในบางครั้งพวกมันจะได้รับการปฏิบัติเหมือน Objects มากขึ้น (การจัดทำดัชนีที่รวดเร็วการแทรก / ลบอย่างรวดเร็วหน่วยความจำที่มากขึ้น) และบางครั้งอาจถูกจัดเก็บเป็นรายการที่เชื่อมโยง (เช่นการจัดทำดัชนีแบบสุ่มช้าการลบ / การแทรกอย่างรวดเร็วที่จุดเริ่มต้น / จุดสิ้นสุด)
ประสิทธิภาพที่แม่นยำของการดึงข้อมูล Array / Object และการปรับแต่งใน JavaScript คืออะไร? (เฉพาะสำหรับ Google V8)
โดยเฉพาะอย่างยิ่งผลกระทบด้านประสิทธิภาพของ:
- การเพิ่มคุณสมบัติให้กับวัตถุ
- การลบคุณสมบัติออกจากวัตถุ
- การสร้างดัชนีคุณสมบัติในวัตถุ
- การเพิ่มรายการใน Array
- การลบรายการออกจาก Array
- การสร้างดัชนีรายการใน Array
- กำลังโทรหา Array.pop ()
- เรียก Array.push ()
- กำลังโทรหา Array.shift ()
- การเรียก Array.unshift ()
- เรียก Array.slice ()
บทความหรือลิงค์สำหรับรายละเอียดเพิ่มเติมจะได้รับการชื่นชมเช่นกัน :)
แก้ไข:ฉันสงสัยจริงๆว่าอาร์เรย์และวัตถุ JavaScript ทำงานอย่างไรภายใต้ประทุน นอกจากนี้เครื่องยนต์ V8 "รู้" ในบริบทใดที่ "เปลี่ยนไปใช้" ไปยังโครงสร้างข้อมูลอื่น
ตัวอย่างเช่นสมมติว่าฉันสร้างอาร์เรย์ด้วย ...
var arr = [];
arr[10000000] = 20;
arr.push(21);
เกิดอะไรขึ้นที่นี่?
หรือ ... อะไรประมาณนี้ ... ???
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...
}
สำหรับอาร์เรย์ทั่วไปประสิทธิภาพจะแย่มาก ในขณะที่หากมีการใช้ LinkedList ... ก็ไม่เลวร้ายนัก