提问人:Satvinder pal singh 提问时间:7/2/2023 最后编辑:marc_sSatvinder pal singh 更新时间:7/9/2023 访问量:27
与在 Javascript 中显式创建 String 对象相比,临时内存分配的速度如何?
How is temporary memory allocation is fast when compared to the explicitly creating String objects in Javascript?
问:
通常建议最好创建字符串基元,而不是创建字符串对象,因为 String 基元只需要内存来存储原始字符串值本身。
但是在内部发生的情况是,当对字符串原语调用方法时,JavaScript 会创建一个临时字符串对象来执行方法操作。
那么这个过程不是更昂贵吗?
答:
0赞
Alexander Nenashev
7/2/2023
#1
String() 构造函数有开销,否则在创建字符串后,它们在速度方面似乎是一样的。
所以你的问题:
那么这个过程不是更昂贵吗?
似乎恰恰相反......
还有一个更通用的答案 - 你在 JS 中编写的代码不是 JS 引擎在内部执行的内容......将其视为一个黑匣子,您只能对其进行基准测试。但请记住,当 JS 引擎的新版本发布时,您应该更新您的基准测试。
<script benchmark data-count="500000000">
// @benchmark string literal
const str = 'one two';
// @run
str.indexOf('two');
// @benchmark String
const str2 = String('one two');
// @run
str2.indexOf('two');
// @benchmark string literal initiation
'one two'.indexOf('two');
// @benchmark String constructor
String('one two').indexOf('two');
</script>
<script src="https://cdn.jsdelivr.net/gh/silentmantra/benchmark/loader.js"></script>
评论
new String('a') != new String('a')
String