javascriptによるDOMの変更が実際に表示されるまでの時間を測定したいと思います。これは、円の色を変更する「ボタン」として機能する2つのrect
Sを表示レンダリング時間の変更JavaScriptで開始
<?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" />
<defs>
<filter id="filterBlur" x="-0.6" width="2.2" y="-0.6" height="2.2">
<feGaussianBlur stdDeviation="120" />
</filter>
</defs>
<rect y="50" x="50" height="100" width="200" style="fill:#ff0000" onmousedown="red()" />
<rect y="50" x="300" height="100" width="200" style="fill:#0000ff" onmousedown="blue()" />
<circle cx="800" cy="600" r="300" id="circle"
style="fill:#888888;filter:url(#filterBlur)" />
<text id="time" x="1250" y="50" style="font-size:40px">time...</text>
<rect x="900" y="300" width="600" height="600"
style="fill:#650088;fill-opacity:0.5;filter:url(#filterBlur)" />
<rect x="100" y="400" width="300" height="400"
style="fill:#999900;fill-opacity:0.5;filter:url(#filterBlur)" />
</svg>
:
は、この例のSVGファイルを考えます。追加の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ミリ秒未満が表示されます時間は、しかし、それは明らかに(自分のコンピュータ上で)ほぼ二とります( 、btw。、ChromeはFirefoxよりも速いようです)。
レンダリングの終了時にクリックと終了から始まる時間はどのように測定できますか?
'requestanimationframe'はおそらくこれのあなたの友人になります。 https://developer.mozilla.org/en-US/docs/Web/API/window.requestAnimationFrame – Ben
@Ben:ありがとうございます!これはChromeとOperaで動作するようになっていますが、FFやIEでは動作しません。何かヒント? – Martin
ウェブページ内でjavascriptを使用してこれを測定することはできません。何らかのアドインやブラウザのツールセットを使用して行う必要があります。 –