mirror of
https://github.com/servo/servo.git
synced 2025-09-10 15:08:21 +01:00
tests: Vendor blink perf tests (#38654)
Vendors the [blink perf tests](https://chromium.googlesource.com/chromium/src/+/HEAD/third_party/blink/perf_tests/). These perf tests are useful to evaluate the performance of servo. The license that governs the perf tests is included in the folder. Running benchmark cases automatically is left to future work. The update.py script is taken from mozjs and slightly adapted, so we can easily filter (and patch if this should be necessary in the future. Testing: This PR just adds the perf_tests, but does not use or modify them in any way. --------- Signed-off-by: Jonathan Schwender <schwenderjonathan@gmail.com>
This commit is contained in:
parent
7621332824
commit
ee781b71b4
648 changed files with 359694 additions and 0 deletions
|
@ -0,0 +1,45 @@
|
|||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<script type="text/javascript" src="../resources/runner.js"></script>
|
||||
</head>
|
||||
<body>
|
||||
<script>
|
||||
function appendBranchWithDepth(depth)
|
||||
{
|
||||
var node = document.body;
|
||||
while (depth) {
|
||||
var child = document.createElement('div');
|
||||
node.appendChild(child);
|
||||
node = child;
|
||||
depth--;
|
||||
}
|
||||
return node;
|
||||
}
|
||||
|
||||
function appendChildren(root, childCount)
|
||||
{
|
||||
while (childCount) {
|
||||
root.appendChild(document.createElement('div'));
|
||||
childCount--;
|
||||
}
|
||||
}
|
||||
|
||||
// This makes a tree of depth 50 with 500 leaves.
|
||||
var tipOfBranch = appendBranchWithDepth(50);
|
||||
appendChildren(tipOfBranch, 500);
|
||||
var customEvent = new Event('foo');
|
||||
|
||||
function run()
|
||||
{
|
||||
for (var node = tipOfBranch.firstChild; node; node = node.nextSibling)
|
||||
node.dispatchEvent(customEvent);
|
||||
}
|
||||
|
||||
PerfTestRunner.measureRunsPerSecond({
|
||||
description: "Measure events dispatching",
|
||||
run: run
|
||||
});
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
|
@ -0,0 +1,65 @@
|
|||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<script type="text/javascript" src="../resources/runner.js"></script>
|
||||
</head>
|
||||
<body>
|
||||
<div id="root"><div id="child1"></div><div id="child2"></div></div>
|
||||
<script>
|
||||
function createComposedTree(root, depth, eachTreeHeight)
|
||||
{
|
||||
var node = root;
|
||||
var i;
|
||||
for (i = 0; i < eachTreeHeight; ++i) {
|
||||
var child = document.createElement('div');
|
||||
node.appendChild(child);
|
||||
node = child;
|
||||
}
|
||||
if (depth == 1)
|
||||
return;
|
||||
var child = document.createElement('div');
|
||||
node.appendChild(child);
|
||||
var shadowRoot = child.attachShadow({ mode: 'open' });
|
||||
createComposedTree(shadowRoot, depth - 1, eachTreeHeight);
|
||||
}
|
||||
|
||||
function leftMostLeaf(root)
|
||||
{
|
||||
var node = root;
|
||||
while (node.firstChild)
|
||||
node = node.firstChild
|
||||
if (!node.shadowRoot)
|
||||
return node;
|
||||
return leftMostLeaf(node.shadowRoot)
|
||||
}
|
||||
|
||||
function rightMostLeaf(root)
|
||||
{
|
||||
var node = root;
|
||||
while (node.lastChild)
|
||||
node = node.lastChild
|
||||
if (!node.shadowRoot)
|
||||
return node;
|
||||
return rightMostLeaf(node.shadowRoot)
|
||||
}
|
||||
|
||||
var root = document.getElementById('root');
|
||||
createComposedTree(document.getElementById('child1'), 50, 10);
|
||||
createComposedTree(document.getElementById('child2'), 50, 10);
|
||||
var leaf1 = leftMostLeaf(root);
|
||||
var leaf2 = rightMostLeaf(root);
|
||||
|
||||
function run()
|
||||
{
|
||||
leaf1.dispatchEvent(new MouseEvent('mousemove', {
|
||||
relatedTarget: leaf2
|
||||
}));
|
||||
}
|
||||
|
||||
PerfTestRunner.measureRunsPerSecond({
|
||||
description: "Measure mousemove events dispatching in shadow trees",
|
||||
run: run
|
||||
});
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
|
@ -0,0 +1,66 @@
|
|||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<script type="text/javascript" src="../resources/runner.js"></script>
|
||||
</head>
|
||||
<body>
|
||||
<div id="root"></div>
|
||||
<script>
|
||||
function createComposedTree(root, depth, branch, eachTreeHeight)
|
||||
{
|
||||
var node = root;
|
||||
var i;
|
||||
for (i = 0; i < eachTreeHeight; ++i) {
|
||||
var child = document.createElement('div');
|
||||
node.appendChild(child);
|
||||
node = child;
|
||||
}
|
||||
if (depth == 1)
|
||||
return;
|
||||
for (i = 0; i < branch; ++i) {
|
||||
var child = document.createElement('div');
|
||||
node.appendChild(child);
|
||||
var shadowRoot = child.attachShadow({ mode: 'open' });
|
||||
createComposedTree(shadowRoot, depth - 1, branch, eachTreeHeight);
|
||||
}
|
||||
}
|
||||
|
||||
function leftMostLeaf(root)
|
||||
{
|
||||
var node = root;
|
||||
while (node.firstChild)
|
||||
node = node.firstChild
|
||||
if (!node.shadowRoot)
|
||||
return node;
|
||||
return leftMostLeaf(node.shadowRoot)
|
||||
}
|
||||
|
||||
function rightMostLeaf(root)
|
||||
{
|
||||
var node = root;
|
||||
while (node.lastChild)
|
||||
node = node.lastChild
|
||||
if (!node.shadowRoot)
|
||||
return node;
|
||||
return rightMostLeaf(node.shadowRoot)
|
||||
}
|
||||
|
||||
var root = document.getElementById('root');
|
||||
createComposedTree(root, 10, 2, 50);
|
||||
var leaf1 = leftMostLeaf(root);
|
||||
var leaf2 = rightMostLeaf(root);
|
||||
|
||||
function run()
|
||||
{
|
||||
leaf1.dispatchEvent(new MouseEvent('mousemove', {
|
||||
relatedTarget: leaf2
|
||||
}));
|
||||
}
|
||||
|
||||
PerfTestRunner.measureRunsPerSecond({
|
||||
description: "Measure mousemove events dispatching in shadow trees",
|
||||
run: run
|
||||
});
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
|
@ -0,0 +1,37 @@
|
|||
<!DOCTYPE html>
|
||||
<style>
|
||||
body {
|
||||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
}
|
||||
div {
|
||||
height: 1px;
|
||||
width: 200px;
|
||||
position: relative;
|
||||
background-color: green;
|
||||
}
|
||||
</style>
|
||||
<body>
|
||||
<script src="../resources/runner.js"></script>
|
||||
<script>
|
||||
var count = 5000;
|
||||
function setupTest() {
|
||||
for (var i = 0; i < count; ++i)
|
||||
document.body.appendChild(document.createElement("div"));
|
||||
}
|
||||
|
||||
setupTest();
|
||||
|
||||
function test() {
|
||||
for (var i = 0; i < 1000; i++) {
|
||||
var x = 600 * Math.random();
|
||||
var y = 400 * Math.random();
|
||||
var el = document.elementFromPoint(x, y);
|
||||
}
|
||||
}
|
||||
|
||||
PerfTestRunner.measureRunsPerSecond({
|
||||
description: "Measures hit test performance with many layers.",
|
||||
run: test
|
||||
});
|
||||
</script>
|
|
@ -0,0 +1,16 @@
|
|||
<!DOCTYPE html>
|
||||
<html>
|
||||
<body>
|
||||
<script src="../resources/runner.js"></script>
|
||||
</script>
|
||||
<script>
|
||||
let options = {};
|
||||
PerfTestRunner.measureRunsPerSecond({
|
||||
description: "Measures performance of querying navigator.scheduling.isInputPending with default events.",
|
||||
run: () => {
|
||||
navigator.scheduling.isInputPending(options);
|
||||
},
|
||||
});
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
|
@ -0,0 +1,18 @@
|
|||
<!DOCTYPE html>
|
||||
<html>
|
||||
<body>
|
||||
<script src="../resources/runner.js"></script>
|
||||
</script>
|
||||
<script>
|
||||
let options = {
|
||||
includeContinuous: true,
|
||||
};
|
||||
PerfTestRunner.measureRunsPerSecond({
|
||||
description: "Measures performance of querying navigator.scheduling.isInputPending with continuous events included.",
|
||||
run: () => {
|
||||
navigator.scheduling.isInputPending(options);
|
||||
},
|
||||
});
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
Loading…
Add table
Add a link
Reference in a new issue