JSの性能はどのように最適化しますか?

1458 ワード

ドメインチェーンの頻繁な検索を避ける
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コメント