在JavaScript中,在对象上装箱每个数字和字符串的性能成本是多少
In JavaScript, what are the performance costs of boxing every number and string on objects?
我正在JavaScript上编程一种类似Lisp的语言,用于学习目的。每个对象都是树的一部分,所以它必须跟踪其父对象。唯一的问题是数字和字符串:
foo = {};
var a = 1;
a.parent = foo;
这是行不通的。我不得不这样做:
foo = {};
var a = {type:'number',value:1,parent:foo}
所以我必须把我语言中的每个数字和字符串都框成这样的散列。我假装对所说的语言做了一些广泛的矩阵运算,所以我很担心。这种方法会影响性能吗?
如Reid所建议:
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
这可能回答了这个问题。我想知道是否有一种替代方案不会在表演上大受欢迎。
相关文章:
- 如何在JavaScript中将字符串转换为函数引用
- 函数参数中的数据与指定变量之间的任何性能差异
- 提高JQuery的性能
- jQuery中是否内置了任何字符串格式化函数
- Javascript,有没有一种方法可以将数组写成没有逗号或空格的单个文本字符串
- ng打开空字符串
- 正则表达式在字符串中找到base64
- 如何将字符串值从php页面发送到java脚本页面
- 子字符串/正则表达式以获取字符串中保存的 SRC 值
- 在JavaScript中,在对象上装箱每个数字和字符串的性能成本是多少
- 如何以良好的性能更新修改后的字符串
- 对字符串对象调用 .localeCompare 与构造特制的 Intl.Collator 对象之间的性能差异
- 将常用字符串定义为变量是否会提高性能
- JavaScript 中字符串 concat 的可怕性能
- JavaScript字符串相等性能比较
- javascript:循环字符串和性能
- 声明了JS中的var和字符串的性能
- 常规字符串和模板字符串的性能差异
- 性能方面,算法复杂性方面,下面两个JS函数中哪一个用于将字符串的第一个字母大写更好,为什么?
- 如何提高大型字符串的 JavaScript 工具提示的性能