Hatena::ブログ(Diary)

f8g

 

2011/05/23

ポップアップブロック

| 02:42

下の二つはブラウザによって動作が違うみたいというお話でした。

button.onclick = function(){
  window.open(url);
};
button.onclick = function(){
  setTimeout(function(){
    window.open(url);
  }, 1);
};

http://arikui.github.com/js/popupblock.html

<html>
<head>
<title>test</title>
<script type="text/javascript">
function execute(){
	window.open("popupblock.html");
}

function click1(){
	execute();
}

function click2(){
	setTimeout(function(){
		execute();
	}, 1);
}

function click3(){
	var req = new XMLHttpRequest;

	req.onreadystatechange = function(){
		if(this.readyState == 4){
			execute();
		}
	};

	req.open("GET", "popupblock.html");
	req.send();
}
</script>
<body>
<button onclick="click1();">click</button>
<button onclick="click2();">setTimeout</button>
<button onclick="click3();">XMLHttpRequest</button>
<button onclick="document.getElementsByTagName('button')[0].click();">call first button's event</button>
</body>
</html>
トラックバック - http://d.hatena.ne.jp/arikui/20110523

2010/12/03

クロージャ, call, apply の今

| 00:32

もう1年も経っていた。

http://d.hatena.ne.jp/arikui/20091021

久々に気になったのでちょっと直して測りなおしました。計測PCも違ってたりしますが、多分傾向は同じ。

単位はナノ秒。

fx3.6

plain			  57
closure			 218
call			 230
apply			 520
apply arguments		1700
apply this value	 262
closure 3 nest		 516
call 3 nest		 518

クロージャもcallも大して差がなくなった。argumentsをapplyすると一気に遅い。

fx4b8

plain			  13
closure			 114
call			 137
apply			 211
apply arguments		 322
apply this value	 107
closure 3 nest		 395
call 3 nest		 360

argumentsのapplyが速くなった。コンテキスト辿るのも速くなった感じがする。

ie9b

plain			 410
closure			2443
call			1733
apply			2043
apply arguments		4427
apply this value	1867
closure 3 nest		3886
call 3 nest		4143

クロージャが遅いみたいだけど、callを重ねると大差なくなる。

opera10.7

plain			  35
closure			 523
call			 558
apply			 195
apply arguments		1135
apply this value	 672
closure 3 nest		1583
call 3 nest		1835

配列のapplyが何故か速い。

safari5

plain			  44
closure			 960
call			 993
apply			 962
apply arguments		1131
apply this value	1060
closure 3 nest		2829
call 3 nest		2881

平均的。

chrome 9

plain			  24
closure			  79
call			 266
apply			 120
apply arguments		 285
apply this value	 286
closure 3 nest		 131
call 3 nest		 713

callがやけに遅い。

トラックバック - http://d.hatena.ne.jp/arikui/20101203