小编Kar*_*ten的帖子

用于执行一致性和性能的原型或闭包?

在javascript中调用方法的性能执行和执行时间一致性之间的最佳折衷是什么?

我还在学习JavaScript和会使用原型最一切(即布兰登·艾克在这里),但我想我发现从功能关闭更好的性能和一致性(我知道我可能是过度优化).我一直在测试的一种原型模式:

function PrototypeA() {}
PrototypeA.prototype.a = 0;
PrototypeA.prototype.b = 0;
PrototypeA.prototype.someMath = function() {
    this.a += 1;
    this.b += 2;
};
var Test = new PrototypeA();
Test.someMath();
Run Code Online (Sandbox Code Playgroud)

读完这篇(伟大的!)帖后决定基准闭包.目前的封闭模式我正朝着:

var SubModule = new((function() {
    var a = 0;
    var b = 0;
    var someMath = function() {
        a += 1;
        b += 2;
    };
    return function() {
        this.someMath = someMath
    };
})())();
Run Code Online (Sandbox Code Playgroud)

我发现由于测试设置中的错误(例如在基准测试中调用构造函数或以导致不同范围遍历路径的方式调用方法),各种模式的许多基准都会产生误导.我只是想测试方法执行.

在本地进行了大量的基准测试(基于许多不同模式的benchmark.js)后,我提出了值得注意的模式:

Jsperf在这里

我的发现似乎支持组织良好的闭包不会在执行时间上偏离其他类型的对象(我松散地使用术语"类型").我意识到由于基准测试或设置上的任何数字或错误,我可能完全错误.

谢谢你的期待!

javascript performance closures

6
推荐指数
1
解决办法
1695
查看次数

标签 统计

closures ×1

javascript ×1

performance ×1