我希望能够测量由JavaScript实际完成的DOM更改直到其显示所需的时间。
考虑这个示例SVG文件:
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
width="1600"
height="1000"
version="1.1">
<script xlink:href="clicktest.js" />
这段代码展示了两个
rect
,它们充当“按钮”,可以改变圆形的颜色。额外的rect
、模糊和透明度是为了使其更加缓慢。脚本如下:
function blue()
{
var startTime = performance.now();
document.getElementById('circle').style.fill = '#0000ff';
var endTime = performance.now();
document.getElementById('time').textContent = (endTime - startTime).toString();
}
function red()
{
var startTime = performance.now();
document.getElementById('circle').style.fill = '#ff0000';
var endTime = performance.now();
document.getElementById('time').textContent = (endTime - startTime).toString();
}
现在点击时,会显示少于1毫秒的时间,但实际上需要接近一秒钟(在我的电脑上)才能真正显示改变后的颜色(顺便说一句,在这方面Chrome似乎比Firefox更快)。
我如何测量从点击开始到渲染完成结束的时间?