JSの性能はどのように最適化しますか?
1458 ワード
ドメインチェーンの頻繁な検索を避ける
まずo.xに対する時間複雑度はO(n)であり、一般変数に対する取得時間複雑度はO(1)である.減算サイクル 終了条件を簡略化する .循環体 を簡略化する.
また、Duff装置を紹介します.循環体を複数の循環体文に展開することで、効率が大幅に向上します.
UIイベントエージェント
ページ上のイベントハンドラの数とページ応答時間は負の相関を示します.父レベル+の要素において,発泡と捕獲特性に基づいて,イベントエージェントを実現した.
注意HTMLCollectionタイプの対象
文書クエリのオーバヘッドは非常に高価であり、かつ動的に更新されているので、キャッシュアップ効率
var gv;
function f () {
// var iv = gv
for 100
console.log(gv)
// console.log(iv)
}
重複属性の検索を避けるまずo.xに対する時間複雑度はO(n)であり、一般変数に対する取得時間複雑度はO(1)である.
// var ce = document.createElement
for 100
document.createElement('div')
// ce('div')
語句を減らすvar a = null
var b = null
var c = null
/// var a = b = c = null
サイクルを最適化また、Duff装置を紹介します.循環体を複数の循環体文に展開することで、効率が大幅に向上します.
var iterations = Math.floor(values.length / 8)
var leftover = values.length % 8
var i = 0
if (leftover > 0) {
do {
process(values[i++])
} while (--leftover > 0)
}
do {
process(values[i++])
process(values[i++])
process(values[i++])
process(values[i++])
process(values[i++])
process(values[i++])
process(values[i++])
process(values[i++])
// 8
} while (--iterations > 0)
キャッシュのDOMに対する大量の修正document.createDocumentFragment()
は、さらにinnerHTML
を使用する効率がcreateElement
およびappendChild
よりも高いので、キャッシュポリシーにも注意しなければならない.UIイベントエージェント
ページ上のイベントハンドラの数とページ応答時間は負の相関を示します.父レベル+の要素において,発泡と捕獲特性に基づいて,イベントエージェントを実現した.
注意HTMLCollectionタイプの対象
文書クエリのオーバヘッドは非常に高価であり、かつ動的に更新されているので、キャッシュアップ効率
getElementsByTageName()
childNodes
attributes
document.forms
コメント