JavaScript プログラミング講座

 

ウェブパフォーマンスについて

 


■ウェブパフォーマンスについて


ウェブパフォーマンスは、HTML5 世代の API です。
 
実行環境の性能を測定するための機能がまとまっています。
 
W3C により、仕様が勧告されています。
 
http://www.w3.org/TR/hr-time/ (High Resolution Time)
 
http://www.w3.org/TR/navigation-timing/ (Navigation Timing)
 
■ Performance オブジェクトを取得する
 
Performance オブジェクトを取得するには、window.performance プロパティを使用します。
 
パフォーマンスオブジェクトを取得する

// パフォーマンスオブジェクトを取得する
var performance_obj = window.performance;

// 出力テスト
console.log(performance_obj);
 


 

高分解能タイマーを取得する

 
 


■従来の時間取得方法について


従来の方法で、現在の時間を取得するには、Date.now() メソッドを使用します。
 
Date.now() メソッドは、ミリ秒まで得ることができます。
 

■高分解能タイマーについて

 
高分解能タイマーを使用すると、マイクロ秒まで測定することができます。(ミリ秒の千分の一)
 
環境によっては、必ずしも分解能がマイクロ秒になるとは限りません。
 
測定できない場合、分解能はミリ秒となります。
 

■高分解能タイマーを取得する


ナビゲーションを開始してから、経過した時間を取得するには、performance.now() メソッドを使用します。
 
得られる単位はミリ秒です。(分解能はマイクロ秒)
 
ナビゲーションの開始とは、前回のページから、今回のページへ遷移を開始した瞬間です。
 
ナビゲーション開始から経過した時間を取得する

// 高分解能タイマーに対応している
if(!window.performance){
}else if(!performance.now){
}else{

	// ナビゲーションを開始してから、経過した時間を取得する
	var time = performance.now();

	// 出力テスト
	console.log(time);

}
 

■任意のスクリプトの経過時間を測定する


任意のスクリプトの「実行前」と、「実行後」のタイミングで、now() メソッドを使って時間を取得します。
 
「実行後に得られた時間」から、「実行前に得られた時間」を引くと、任意のスクリプトの経過時間がわかります。
 
任意のスクリプトの経過時間を測定する

// 高分解能タイマーに対応している
if(!window.performance){
}else if(!performance.now){
}else{

	// 実行前に時間を取得する
	var time_old = performance.now();

	// --- 測定したい任意のスクリプトを実行する ---
	var i;
	var a = [];
	for(i=0;i<1000;i++){
		a[i] = i;
	}
	// --- 測定したい任意のスクリプトを実行する ---

	// 実行後に時間を取得する
	var time_now = performance.now();

	// 出力テスト
	console.log(time_now - time_old);
}