tt25 (owner)

Revisions

gist: 49543 Download_button fork
public
Public Clone URL: git://gist.github.com/49543.git
Embed All Files: show embed
HTML #
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
<!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>