在JavaScript中,在对象上装入每个数字和字符串的性能成本是多少?

时间:2012-08-25 17:00:09

标签: javascript performance hash lisp

我正在编写一个类似于JavaScript的JavaScript语言用于学习目的。每个对象都是树的一部分,因此它必须跟踪其父对象。唯一的问题是数字和字符串:

foo = {};
var a = 1;
a.parent = foo;

这不起作用。我必须这样做:

foo = {};
var a = {type:'number',value:1,parent:foo}

所以我必须在我的语言中将每个数字和字符串打包成这样的哈希。我假装对所说的语言做了一些广泛的矩阵数学,所以我很担心。这种方法会对性能产生影响吗?

1 个答案:

答案 0 :(得分:1)

正如里德所说:

function number(n){
    return {type:'number',parent:undefined,value:n};
}
function sum(a,b){
    return {type:'number',parent:undefined,value:a.value+b.value};
}
var i = number(0);
for (var t=Date.now(); Date.now()-t < 1000;){
    var i=sum(i,number(1));}
console.log('Operations with boxing: ',i.value);
var i = 0;
for (var t=Date.now(); Date.now()-t < 1000;){
    var i=i+1;}
console.log('Operations without boxing: ',i);

输出:

Operations with boxing: 1911258
Operations without boxing: 16805783

这可能回答了这个问题。我想知道是否有一种替代品不会受到这样的影响。