Should improve performance of closest considerably. Benchmark proof in speed/closest.html
This commit is contained in:
parent
cbf9d874e5
commit
0ca35de311
3 changed files with 62 additions and 13 deletions
|
@ -1,9 +1,15 @@
|
|||
// Runs a function many times without the function call overhead
|
||||
function benchmark(fn, times){
|
||||
function benchmark(fn, times, name){
|
||||
fn = fn.toString();
|
||||
var s = fn.indexOf('{')+1,
|
||||
e = fn.lastIndexOf('}');
|
||||
fn = fn.substring(s,e);
|
||||
|
||||
return new Function('i','var t=new Date;while(i--){'+fn+'};return new Date-t')(times);
|
||||
return benchmarkString(fn, times, name);
|
||||
}
|
||||
|
||||
function benchmarkString(fn, times, name) {
|
||||
var fn = new Function("i", "var t=new Date; while(i--) {" + fn + "}; return new Date - t")(times)
|
||||
fn.displayName = name || "benchmarked";
|
||||
return fn;
|
||||
}
|
||||
|
|
35
speed/closest.html
Normal file
35
speed/closest.html
Normal file
|
@ -0,0 +1,35 @@
|
|||
<!doctype html>
|
||||
<html>
|
||||
<head>
|
||||
<title>Test Event Handling Performance</title>
|
||||
<script src="benchmark.js"></script>
|
||||
<script src="jquery-basis.js"></script>
|
||||
<script>var old = jQuery.noConflict(true);</script>
|
||||
<script src="../dist/jquery.js"></script>
|
||||
<script>
|
||||
jQuery(function ready() {
|
||||
var node = $("#child"), name;
|
||||
|
||||
[".zoo", "#zoo", "[data-foo=zoo]", "#nonexistant"].forEach(function foreach(item) {
|
||||
name = "closest '" + item + "'";
|
||||
console.log(name);
|
||||
|
||||
console.log("new", benchmarkString("$('#child').closest('" + item + "')", 5000, name));
|
||||
console.log("old", benchmarkString("old('#child').closest('" + item + "')", 5000, name));
|
||||
});
|
||||
});
|
||||
</script>
|
||||
</head>
|
||||
<body>
|
||||
<div>
|
||||
<p>Hello</p>
|
||||
<div class="zoo" id="zoo" data-foo="bar">
|
||||
<div>
|
||||
<p id="child">lorem ipsum</p>
|
||||
<p>dolor sit amet</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
|
Loading…
Add table
Add a link
Reference in a new issue