閱讀文檔時,我發現了一個簡單的優化,大大提高了JavaScript的性能。Javascript功能優化(`)`
原始代碼:
function parseRow(columns, parser) {
var row = {};
for (var i = 0; i < columns.length; i++) {
row[columns[i].name] = parser.readColumnValue();
}
}
優化代碼:
var code = 'return {\n';
columns.forEach(function(column) {
code += '"' + column.name + '":' + 'parser.readColumnValue(),\n';
});
code += '};\n';
var parseRow = new Function('columns', 'parser', code);
這裏找到:https://github.com/felixge/faster-than-c
爲什麼它運行快20%?
我相信它會刪除for
語句,但不會有forEach
具有相同的計算成本?
它是否在談論20%的功能創建邏輯本身?或者每次調用函數parseRow?如果是後一種情況,我會假設增益發生是因爲優化代碼中沒有for循環。 (在第一種情況下,for循環會在每次調用parseRow函數時運行,並且多次調用columns.length屬性也可能歸因於原始代碼的緩慢性,只是我的2美分:)) – 2014-09-13 13:10:51
相關(對於V8)http ://www.youtube.com/watch?v = UJPdhx5zTaw – 2014-09-13 13:21:30
當'columns'的大小足夠大時,'優化後的代碼'似乎沒有更快。請參閱[jsPerf](http://jsperf.com/javascript-optimization-with-new-function) – rhgb 2014-09-13 14:02:48