IEで高速なセレクターを作るアイディアがわいたけど、うまく動かない。

<html>
<head>
<script>
if (document.createStyleSheet) {
	window.__getElementsBySelector = function (selector, elem) {
		if (elem) {
			elem.style.behavior = null;
			var cache = window.__getElementsBySelector.cache;
			cache[selector][cache[selector].length] = elem;
		}
	};
	window.__getElementsBySelector.cache = {};
	var sheet = document.createStyleSheet();
	document.getElementsBySelector = function (selector) {
		window.__getElementsBySelector.cache[selector] = [];
		sheet.addRule(selector, "behavior:expression(__getElementsBySelector('" + selector.replace(/'/, "\\'") + "',this));");
		return window.__getElementsBySelector.cache[selector];
	};
}

window.onload = function(){
	var start = (new Date).getTime();
	var elems = document.getElementsBySelector(".test");
	setTimeout(function () {
		document.title += elems.length; // elemを参照する前にalertか、setTimeout内に書くかしないと、イベントが起こらない。
		alert((new Date).getTime() - start)
	}, 0);
};
</script>
</head>
<body>
<div class="test" id="test001"></div>
<div class="test" id="test002"></div>
<div class="test" id="test003"></div>
</body>
</html>