Object.defineProperty()和Object.defineProperties()之间的性能差异

问题描述 投票:0回答:1

我正在寻找这两种方法之间的主要区别。

有些网站提到了可读性问题,但我担心的主要是性能问题。看起来像defineProperty()更快,但我找不到原因。

var FOR_TIME = 10000;


console.time("prop");
for(var i = 0; i < FOR_TIME; i++) {
    var test = {};
    Object.defineProperty(test, "ba", {});
    Object.defineProperty(test, "bab", {});
    Object.defineProperty(test, "bac", {});
}
console.timeEnd("prop");

console.time("props");
for(var i = 0; i < FOR_TIME; i++) {
    var test = {};
    Object.defineProperties(test, {
        a: {},
        ab: {},
        ac: {}
    })
}
console.timeEnd("props");

以下是控制台结果的结果:(执行3次)

1- prop: 9.251ms props: 17.034ms
2- prop: 10.050ms props: 22.443ms
3- prop: 11.013ms props: 17.086ms

使用的节点版本:v10.15.0

javascript ecmascript-5 defineproperty
1个回答
2
投票

您可以将基准读作:“哦,defineProperty快两倍以上”。

或者你可以把它读成:“即使defineProperties只需要20ms进行10.000次迭代,这意味着它几乎不会引起任何问题,除非你在一个运行数千次的循环中创建了数百万个实例。”

© www.soinside.com 2019 - 2024. All rights reserved.