Javascript 调用数组中的性能问题';s继承的方法(推送)
我试图通过继承内置数组构造函数的属性和方法来创建堆栈构造函数。像这样的-Javascript 调用数组中的性能问题';s继承的方法(推送),javascript,arrays,prototypal-inheritance,Javascript,Arrays,Prototypal Inheritance,我试图通过继承内置数组构造函数的属性和方法来创建堆栈构造函数。像这样的- var Stack = function(){}; Stack.prototype = []; Stack.prototype.constructor = Stack; 然后,我尝试以毫秒为单位检查性能,以防在数组中推送1000000个数据,在新创建的堆栈构造函数中推送相同数量的数据 下面是测试结果- “阵列中所用的时间(毫秒)->11” “堆栈中所用的时间(毫秒)->261” 我确实理解,推送方法需要在原型链中查找,
var Stack = function(){};
Stack.prototype = [];
Stack.prototype.constructor = Stack;
然后,我尝试以毫秒为单位检查性能,以防在数组中推送1000000个数据,在新创建的堆栈构造函数中推送相同数量的数据
下面是测试结果-
“阵列中所用的时间(毫秒)->11”
“堆栈中所用的时间(毫秒)->261”
我确实理解,推送方法需要在原型链中查找,但差异仍然很大。有什么可以改进性能的方法吗
我也尝试过向堆栈构造函数添加一个push方法,但它几乎没有提高性能的效果
Stack.prototype.push = function(data){
Array.prototype.push.call(this, data);
}
我已经为同一问题创建了一个新的解决方案。我仍然不知道确切的原因,但是以这种方式定义
堆栈会产生巨大的不同。但是我假设将push
方法与这个
对象绑定起来会花费很多时间
var Stack = function(){
this.arr = [];
this.push = function(elem) {
this.arr.push(elem);
}
};
输出片段
仍在深入研究这个问题,很快就会有更新。我仍然不知道确切原因,但以这种方式定义堆栈会产生巨大的不同。但是我假设将push
方法与这个
对象绑定起来会花费很多时间
var Stack = function(){
this.arr = [];
this.push = function(elem) {
this.arr.push(elem);
}
};
输出片段
仍在深入研究这个问题,很快就会有一个更新。@Cerbrus The Fiddle也包含测试。非常简单:。您的堆栈
实例将是普通对象,并且不会针对数组访问进行优化。@Bergi感谢您共享链接。@Cerburs the Fiddle也包含测试。它非常简单:。您的堆栈
实例将是普通对象,不会针对数组访问进行优化。@Bergi感谢您共享此链接。