阅读文档时,我发现了一个简单的优化,大大提高了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