यह सरणी की लंबाई पर निर्भर करता है। यदि सरणी की लंबाई <= 1,000,000 है, slice
और concat
विधियां लगभग एक ही समय ले रही हैं। लेकिन जब आप एक व्यापक रेंज देते हैं, तो concat
विधि जीत जाती है।
उदाहरण के लिए, इस कोड को आज़माएं:
var original_array = [];
for(var i = 0; i < 10000000; i ++) {
original_array.push( Math.floor(Math.random() * 1000000 + 1));
}
function a1() {
var dup = [];
var start = Date.now();
dup = original_array.slice();
var end = Date.now();
console.log('slice method takes ' + (end - start) + ' ms');
}
function a2() {
var dup = [];
var start = Date.now();
dup = original_array.concat([]);
var end = Date.now();
console.log('concat method takes ' + (end - start) + ' ms');
}
function a3() {
var dup = [];
var start = Date.now();
for(var i = 0; i < original_array.length; i ++) {
dup.push(original_array[i]);
}
var end = Date.now();
console.log('for loop with push method takes ' + (end - start) + ' ms');
}
function a4() {
var dup = [];
var start = Date.now();
for(var i = 0; i < original_array.length; i ++) {
dup[i] = original_array[i];
}
var end = Date.now();
console.log('for loop with = method takes ' + (end - start) + ' ms');
}
function a5() {
var dup = new Array(original_array.length)
var start = Date.now();
for(var i = 0; i < original_array.length; i ++) {
dup.push(original_array[i]);
}
var end = Date.now();
console.log('for loop with = method and array constructor takes ' + (end - start) + ' ms');
}
a1();
a2();
a3();
a4();
a5();
यदि आप original_array की लंबाई को 1,000,000 पर सेट करते हैं, तो slice
विधि औरconcat
विधि लगभग एक ही समय (3-4 ms, यादृच्छिक संख्या के आधार पर) ले रहे हैं।
यदि आप original_array की लंबाई 10,000,000 निर्धारित करते हैं, तो slice
विधि 60 ms से अधिक है और concat
विधि 20 ms से अधिक लेती है।