扩展String.prototype性能表明函数调用快了10倍 | 您所在的位置:网站首页 › combobox函数 › 扩展String.prototype性能表明函数调用快了10倍 |
var A = { count: 1234 };
function getCount(obj) { return obj.count }
A.getCount = function() { return this.count }
console.time('func')
for (var i = 0; i
结果: func: 1689.942ms method: 1674.639ms我一直在搜索Stackoverflow和binging,但其他建议"不要扩展字符串或数组,因为你污染了名称空间"(这对我的特定项目来说不是问题),我找不到任何与方法性能相关的东西与功能相比.因此,我应该忘记由于添加方法的性能下降而扩展String对象,还是有更多关于它的内容? 1> Bergi..: 这很可能是因为您没有使用严格模式,并且this方法中的值需要强制转换为String实例而不是原始字符串. 您可以通过重复测量来确认这一点var STR = new String('01101011…'). 然后修复你的实现: String.prototype.count = function (char) { "use strict"; var n = 0; for (var i = 0; i @exebook:正如我所说,sloppy模式将`this`值转换为一个对象,所以它需要在每次调用时创建一个`String`实例,这对于像你这样简单的方法来说是一个很大的开销 |
CopyRight 2018-2019 实验室设备网 版权所有 |