假设我正在测量执行jQuery函数所需的时间,例如:
<Start timer here>
$("#myImage").hide();
<End timer here>
在该计时器代码中,是否包含因调用该方法而发生的任何重排或重绘?或者这种情况会在一段时间后发生(即消息被发布到队列然后稍后执行)?如何测量回流/重绘的时间?
答案 0 :(得分:0)
根据w3.org,performance.now
不包括在重新绘制/屏幕渲染上花费的时间。
注意:由于now方法返回当前时间,隐藏文档所花费的时间[页面可见性]或未完全活动[HTML5]包含在此方法的目的中 - W3.org。
答案 1 :(得分:0)
Javascript执行通常不会阻止重排。通常重新绘制或重排是排队的,然后浏览器在JS执行的当前线程完成时处理所有排队的操作。这是因为在完成所有JS修改后执行一个布局比在每次更改后执行重新布局更有效。因此,通常在计时器期间不会出现布局。
您可以在Javascript中请求一些属性,这些属性依赖于精确布局的页面(尽管没有绘制),并且请求这些属性可以强制在JS中间布局,这将显示在计时器中。有关可以在Javascript中间强制布局的内容的详细信息,请参阅this article。