<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ja" lang="ja">
<head>
<title>js</title>
</head>
<body>
from.
http://blog.livedoor.jp/dankogai/archives/51167840.html
http://d.hatena.ne.jp/amachang/20090119/1232331329
<ul id="d"></ul>
<script type="text/javascript">
var reports=[];
function timer(label,fn){
var st=new Date;
fn();
var time=new Date() - st;
reports.push([label,time+"ms"].join(": "));
}
var n=10000;
var list=[];
for(var i=0,ul=document.getElementById("d");i<n; i++){
var li=document.createElement("li");
li.innerHTML=i;
ul.appendChild(li);
list.push(li);
}
timer("dummy(define onsubmit)",function(){
for (var i = 0; i < list.length; i++){
list[i].onclick=function(){};
}
});
timer("plain",function(){
var result = 0;
for (var i = 0; i < list.length; i++){
var node=list[i];
var text=node.innerHTML;
node.onclick=function(){ text }
}
});
timer("closure",function(){
var result = 0;
for (var i = 0; i < list.length; i++) (function(node,i){
var text=node.innerHTML;
node.onclick=function(){ text }
})(list[i],i);
});
timer("with",function(){
var result = 0;
for (var i = 0; i < list.length; i++) {
with({node:list[i]}) {
var text=node.innerHTML;
node.onclick=function(){ text }
}
}
});
timer("block",function(){
var result = 0;
var block=function(node,i){
var text=node.innerHTML;
node.onclick=function(){ text }
}
for (var i = 0; i < list.length; i++) {
block(list[i],i);
}
});
console.log(reports);
// Swiftfox 3.0.4pre (Ubuntu 8.04)
// ["dummy(define onsubmit): 209ms", "plain: 251ms", "closure: 340ms", "with: 325ms", "block: 329ms"]
</script>
</body></html>