การเปรียบเทียบประสิทธิภาพระหว่าง 4 วิธีที่สามารถเพิ่มรายการลงในอาร์เรย์:
เพิ่มโดยใช้ตัวทำดัชนี
การคัดลอกรหัสมีดังนี้:
console.time ("ดัชนี");
var a = [];
สำหรับ (var i = 0, l = times; i <l; i ++) {
a [i] = i;
-
console.timeend ("ดัชนี");
ใช้วิธีการผลักดัน
การคัดลอกรหัสมีดังนี้:
console.time ("push");
var a = [];
สำหรับ (var i = 0, l = times; i <l; i ++) {
A.push (i);
-
console.timeend ("push");
ใช้วิธีการ concat
การคัดลอกรหัสมีดังนี้:
console.time ("concat");
var a = [];
สำหรับ (var i = 0, l = times; i <l; i ++) {
a.concat (i);
-
console.timeend ("concat");
ใช้เมธอด concat พารามิเตอร์คืออาร์เรย์
การคัดลอกรหัสมีดังนี้:
console.time ("concat with array");
var a = [];
สำหรับ (var i = 0, l = times; i <l; i ++) {
A.concat ([i]);
-
console.timeend ("concat with array");
กำหนดเวลาเป็น 100 ล้านครั้ง:
การคัดลอกรหัสมีดังนี้:
ดัชนี: 0.310ms
กด: 1.476ms
concat: 8.911ms
เชื่อมต่อกับอาร์เรย์: 2.261ms
กำหนดเวลาเป็น 100,000 (100,000) ครั้ง:
การคัดลอกรหัสมีดังนี้:
ดัชนี: 1.967ms
กด: 11.980ms
concat: 70.410ms
เชื่อมต่อกับอาร์เรย์: 28.292ms
กำหนดเวลาเป็น 10,00000 (ล้าน) ครั้ง:
การคัดลอกรหัสมีดังนี้:
ดัชนี: 138.559ms
กด: 93.074ms
concat: 608.768ms
เชื่อมต่อกับอาร์เรย์: 243.371ms
กำหนดเวลาเป็น 100,000 (10 ล้าน) ครั้ง:
การคัดลอกรหัสมีดังนี้:
ดัชนี: 1473.733ms
กด: 611.636ms
concat: 6058.528ms
เชื่อมต่อกับอาร์เรย์: 2431.689ms
สรุป
ข้อสรุปนี้มีประโยชน์เฉพาะกับเบราว์เซอร์ Chrome
ประสิทธิภาพการดำเนินการของวิธี concat นั้นช้าที่สุด
เมื่อเปรียบเทียบกับการส่งอาร์กิวเมนต์ของวิธีการสองวิธีเมื่อพารามิเตอร์ที่ยอมรับเป็นอาร์เรย์ประสิทธิภาพการดำเนินการจะสูงกว่าพารามิเตอร์ที่ยอมรับว่าไม่ใช่อาเรย์
ในกรณีส่วนใหญ่ประสิทธิภาพการดำเนินการของดัชนีสูงกว่าวิธีการผลักดัน
เมื่อจำนวนการประหารชีวิตเพิ่มขึ้นประสิทธิภาพการดำเนินการของตัวทำดัชนีจะเริ่มเลวร้ายยิ่งกว่าวิธีการผลักดัน
การเปรียบเทียบเบราว์เซอร์
ขอบคุณชาวเน็ตที่ชี้ให้เห็นว่าฉันขาดประสบการณ์ดังนั้นนี่คือการเปรียบเทียบแนวนอนระหว่างเบราว์เซอร์
ก่อนอื่นใช้วิธีการ concat ใน IE และ Firefox พารามิเตอร์คืออาร์เรย์และประสิทธิภาพการดำเนินการช้ากว่าพารามิเตอร์อื่น ๆ ไม่ใช่อาร์เรย์ แต่ความแตกต่างไม่ใหญ่
จากนั้นแน่นอนว่าดัชนีและวิธีการผลักดันเร็วกว่า concat การใช้วิธีการดัชนีใน IE นั้นเร็วกว่าการกดเสมอ การกดจะดีขึ้นเล็กน้อยใน Firefox แต่ความแตกต่างไม่ใหญ่
เมื่อเทียบกับประสิทธิภาพการดำเนินการของดัชนีและวิธีการผลักดันระหว่างเบราว์เซอร์ทั้งสามประสิทธิภาพการดำเนินการของ Firefox นั้นสูงกว่าของ IE และ Chrome มาก ในล้านครั้งโดยทั่วไปจะเร็วขึ้น 10 เท่า ฉันช้าที่สุดเมื่อเทียบกับอีกสองคน
ต่อไปนี้เป็นผลลัพธ์ของล้าน:
การคัดลอกรหัสมีดังนี้:
// firefox
ดัชนี: เริ่มจับเวลา
ดัชนี: 229.79ms
PUSH: TIMER เริ่มต้นขึ้น
กด: 205.12ms
concat: ตัวจับเวลาเริ่ม
concat: 2136.99ms
เชื่อมต่อกับอาร์เรย์: ตัวจับเวลาเริ่ม
เชื่อมต่อกับอาร์เรย์: 2365.18ms
-
การคัดลอกรหัสมีดังนี้:
// เช่น
ดัชนี: 2,533.744 มิลลิวินาที
ผลักดัน: 3,865.979 มิลลิวินาที
concat: 4,303.139 มิลลิวินาที
เชื่อมต่อกับอาร์เรย์: 4,792.208 มิลลิวินาที
บทความนี้เป็นเพียงการสำรวจประสิทธิภาพของ JS มันจะทำให้ความเข้าใจของเพื่อนของคุณเกี่ยวกับ JavaScript ผ่านการเปรียบเทียบ ฉันหวังว่าคุณจะชอบมัน