1. 最速の条件判定
if文の適用シーン
-
2つ以内の離散的な値の判定が必要な場合
-
大量の値を異なる範囲(レンジ)に容易に分割できる場合
switch文の適用シーン
-
2つを超え10個未満の離散的な値の判定が必要な場合
-
条件値が非線形であり、範囲を分離できない場合
配列によるルックアップの適用シーン
-
10個を超える値の判定が必要な場合
-
条件に対応する結果が、一連の操作ではなく単一の値である場合
2. 文字列操作
文字列の結合
モダンブラウザはすでに文字列の最適化を行っています。文字列が短く(20文字未満)、かつ数が少ない(1000個未満)場合、すべてのブラウザで + 演算子を使用して1ms以内に完了できます。
そのため、push + join を使って文字列結合を最適化する必要はもはやありません。ほとんどのシーンでは、直接 + を使うのが適切です。
文字列のトリミング
ES5ではネイティブの trim が提供されています。環境にない場合は、以下の最も高速な trim 実装を使用できます:
function trim(text) {
text = text.replace(/^\s+/, '');
for (var i = text.length - 1; i >= 0; i--) {
if (/\S/.test(text.charAt(i))) {
text = text.substring(0, i + 1);
break;
}
}
return text;
}
あるいは、高速ではありませんが、よりシンプルなバージョン:
function trim(text) {
return text.replace(/^\s+/, '').replace(/\s+$/, '');
}
3. データアクセス
効率を確保するための原則は以下の通りです:
-
頻繁にアクセスする必要がある値をローカル変数にキャッシュする
例えば
arr.lengthやDOMNode Listなど。 -
スコアチェーンを短くする
with以外にも、try-catchのcatchもスコープチェーンを長くします(スコープチェーンの先頭に例外オブジェクトを含むオブジェクトが追加されます)。そのため、パフォーマンスへの影響を抑えるために、catchブロック内にはあまり多くのコードを含めないようにしてください。
参考文献
- 『ハイパフォーマンスWebサイト ―高速サイト構築のための進階ガイド』(原題: Even Faster Web Sites)
コメントはまだありません