Skip to content

Instantly share code, notes, and snippets.

@dvdrtrgn
Created December 5, 2009 19:14
Show Gist options
  • Save dvdrtrgn/249814 to your computer and use it in GitHub Desktop.
Save dvdrtrgn/249814 to your computer and use it in GitHub Desktop.
Array clone bakeoff
if (document.getElementById('hello')) {
document.getElementById('hello').innerHTML = 'Hello World - this was inserted using JavaScript';
}
var original_array = [],
dup_array;
for (var j = 0; j < 1500000; j++) {
original_array[j] = 9;
}
function test1() {
dup_array = null;
var timeStart, timeEnd;
timeStart = (new Date()).getTime();
dup_array = original_array.slice();
timeEnd = (new Date()).getTime();
document.getElementById('test1result').innerHTML = (timeEnd - timeStart);
setTimeout(test2, 1000);
}
function test2() {
dup_array = null;
var timeStart, timeEnd;
timeStart = (new Date()).getTime();
dup_array = [];
for (var i = 0, l = original_array.length; i < l; ++i)
dup_array[i] = original_array[i];
timeEnd = (new Date()).getTime();
document.getElementById('test2result').innerHTML = (timeEnd - timeStart);
setTimeout(test3, 1000);
}
function test3() {
dup_array = null;
var timeStart, timeEnd, l;
timeStart = (new Date()).getTime();
l = original_array.length;
dup_array = new Array(l);
for (var i = 0; i < l; ++i)
dup_array[i] = original_array[i];
timeEnd = (new Date()).getTime();
document.getElementById('test3result').innerHTML = (timeEnd - timeStart);
}
function run() {
test1();
}
document.getElementsByTagName('input')[0].value = "ready";
<!DOCTYPE html>
<html>
<head>
<meta charset=utf-8 />
<title>Array clone bakeoff</title>
<!--[if IE]><script src="http://html5shiv.googlecode.com/svn/trunk/html5.js"></script><![endif]-->
<style> article, aside, figure, footer, header, hgroup, menu, nav, section { display: block; } </style>
</head>
<body>
<table>
<tr>
<td>test1 slice</td>
<td><span id="test1result" ></span></td>
</tr>
<tr>
<td>test2 loop</td>
<td><span id="test2result" ></span></td>
</tr>
<tr>
<td>test3 loop fixed size</td>
<td><span id="test3result" ></span></td>
</tr>
</table>
<input type="button" value="wait" onclick="run()">
<script src="clone.js"></script>
</body>
</html>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment