四、使用速度快的部分
雙重求值:在js**中執行另一段js**時,會導致雙重求值的效能消耗。在js**中執行乙個包含js**的字串的方法有。
var num1 =
5, num2 =6;
result =
eval
("num1 + num2");
sum =
newfunction
("arg1"
,"arg2"
,"return arg1 + arg2");
settimeout
("sum = num1 + num2"
,100);
setinterval
("sum = num1 + num2"
,100
);
雙重求值慢的原因是每次呼叫這些函式時都要建立乙個新的直譯器/編譯器例項
解決方法是,避免使用eval函式和function()建構函式,settimeout()和setinterval()建議傳入函式而不是字串來作為第乙個引數。
在js中建立物件和陣列時,使用物件和陣列直接量是最快的操作
function
addhandler
(target, eventtype, handler)
else
}function
removehandler
(target, eventtype, handler)
else
}
這個就是重複工作,每次呼叫addhandler
都會重新走一次判斷。
function
addhandler
(target, eventtype, handler);}
else;}
//call the new function
addhandler
(target, eventtype, handler);}
function
removehandler
(target, eventtype, handler);}
else;}
//call the new function
removehandler
(target, eventtype, handler)
;}
當第一次呼叫addhandler、removehandler
時,走一次流程,並將它們覆蓋。
在指令碼addhandler、removehandler
執行之前就檢測了一次,把真正的addhandler、removehandler
設定好。
var addhandler = document.body.addeventlistener ?
function
(target, eventtype, handler)
:function
(target, eventtype, handler)
;var removehandler = document.body.removeeventlistener ?
function
(target, eventtype, handler)
:function
(target, eventtype, handler)
;
js被指責慢,其實它的js引擎並不慢(它是有低階語言寫的,如c),慢的是js**。
js中位操作是有優勢的。js的位操作有位或、位異或、位與、位非
。用位運算提高運算速度的方式例子——對2取模實現顏色設定、位掩碼。
對2取模實現顏色設定例子
for
(var i =
0, len = rows.length; i < len; i++
)else
}// 通過位運算提高運算速度
for(
var i =
0, len = rows.length; i < len; i++
)else
}
位掩碼例子。
var
option_a=1
;var
option_b=2
;var
option_c=4
;var
option_d=8
;var
option_e=16
;//你自己的選項
var options =
option_a
|option_c
|option_d
;// 對你選擇的選項進行判斷
if(options &
option_a)if
(options &
option_b
)
無論你怎麼優化js**,速度都沒有js引擎提供的原生方法快。所以盡量使用js提供的math物件
。
選擇器api中,queryselector() 與 queryselectorall()都比jquery快。
效能優化實踐
由於系統表資料量達到百萬級別,所有就遇到了效能優化問題。總結解決問題思路如下 1 從使用者角度來說,介面的資料載入緩慢,超過5秒就是存在效能問題了。解決問題思路,首先,先確定瓶頸點在 確定是 的問題還是sql的問題,可以通過debug除錯或者日誌或者擷取堆疊資訊檢視耗時來確定。2 如果是 層面的問題...
C 效能優化實踐
優化準則 1.二八法則 在任何一組東西中,最重要的只佔其中一小部分,約20 其餘80 的儘管是多數,卻是次要的 在優化實踐中,我們將精力集中在優化那20 最耗時的 上,整體效能將有顯著的提公升 這個很好理解。函式a 雖然 量大,但在一次正常執行流程中,只呼叫了一次。而另乙個函式b 量比a 小很多,但...
C 效能優化實踐
優化準則 1.二八法則 在任何一組東西中,最重要的只佔其中一小部分,約20 其餘80 的儘管是多數,卻是次要的 在優化實踐中,我們將精力集中在優化那20 最耗時的 上,整體效能將有顯著的提公升 這個很好理解。函式a雖然 量大,但在一次正常執行流程中,只呼叫了一次。而另乙個函式b 量比a小很多,但被呼...