gpt4 book ai didi

javascript - Javascript 中最快的类/对象访问/实例化是什么

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:43:34 27 4
gpt4 key购买 nike

在探索几种不同的构建类的方法时,我很好奇什么是实例化和访问类的最快方法。基于另一个问题的输入:

Javascript scope and self=this, _this=this, that=this ,

我现在正在研究创建类的三种方法,并且很好奇有哪些输入可以以最快的方式创建和访问对象。

var DogClass = function DogClass(_age) {
this.age=_age;

this.setAge = function(num) {
this.age=num;
}.bind(this);

this.getAge = function() {
return this.age;
}.bind(this);
};

var BirdClass = function BirdClass(_age) {
var _this=this;
this.age=_age;

this.setAge = function(num) {
_this.age=num;
};

this.getAge = function() {
return _this.age;
};
};

var CatClass = function CatClass(_age) {
this.age=_age;
};

CatClass.prototype.setAge = function (num) {
this.age=num;
};
CatClass.prototype.getAge = function () {
return this.age;
};

function profileCreate() {
console.log("Creating a million of each");

var o,i,iterations=1000000;

console.time('createDog');
for(i=0;i<iterations;i++) {
o=new DogClass(4);
}
console.timeEnd('createDog');

console.time('createCat');
for(i=0;i<iterations;i++) {
o=new CatClass(4);
}
console.timeEnd('createCat');

console.time('createBird');
for(i=0;i<iterations;i++) {
o=new BirdClass(4);
}
console.timeEnd('createBird');
}

function profileAccess() {
console.log("Accessing a million of each");

var o,i,iterations=1000000;

console.time('accessDog');
for(i=0;i<iterations;i++) {
fido.setAge(5);
}
console.timeEnd('accessDog');

console.time('accessCat');
for(i=0;i<iterations;i++) {
fluffy.setAge(6);
}
console.timeEnd('accessCat');

console.time('accessBird');
for(i=0;i<iterations;i++) {
tweety.setAge(7);
}
console.timeEnd('accessBird');
}

每人创造一百万

  • createDog:1531.654 毫秒
  • createCat:7.301 毫秒
  • createBird:605.982 毫秒

访问一百万个

  • accessDog:197.338ms
  • accessCat:11.404ms
  • accessBird:7.031 毫秒

如果我第二次选择“配置文件访问”按钮,accessCat 方法会快得多。

  • accessDog:185.607ms
  • accessCat:0.958ms
  • accessBird:11.095 毫秒

???解释器是否由于传递了静态数字而优化了调用?

这是 fiddle :http://jsfiddle.net/sday/yrropeer/3/

关于代码中可能存在的哪些错误会使此小型性能测试无效,您有什么想法吗?在我看来,原型(prototype)是创建类最快的,而 BirdClass 是访问最快的。

最佳答案

创建类、对象的设计模式有很多种,每一种都有自己的优缺点。为了比较它们,请查看 this .

关于javascript - Javascript 中最快的类/对象访问/实例化是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27937436/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com