首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >为什么在javascript中双重查找比单次查找更快?

为什么在javascript中双重查找比单次查找更快?
EN

Stack Overflow用户
提问于 2014-12-01 10:55:59
回答 1查看 555关注 0票数 16

我在jsperf测试中看到一些奇怪的行为。下面是设置:

var pro={};
pro._x=3;
var q=Object.create(pro);
q.x=3;
q.z={};
q.z.x=3;

然后,我只需查找q.xq._xq.z.x的每个属性。

正如预期的那样,单一查找q.x比原型查找q._x更快。但是双重查找q.z.x是最快的。我预计q.z.x会是最慢的,特别是与q.x相比。

q.z.x甚至比q.z更快。这里发生什么事情?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-05-13 21:46:38

使更深层次的查找变得更快的原因是,JavaScript引擎能够更好地优化代码以提高性能,因为它确切地知道它正在接收什么对象。

与使用Object.create不同,引擎无法执行其常规的优化周期,使用普通的旧空对象来初始化q对象的z属性,基本上允许引擎分配适当的内存并相应地对其进行索引。

这段代码var q=Object.create(pro);基本上告诉JS引擎:“嘿,你得到了一个Object的实例,但我不知道它是什么类型。可能是一个数组、对象、RegExp、日期。”,而这段代码-- q.z={};说--“嘿,你在这里得到了一个Object对象!请确保根据这个数据类型留出一些内存”。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27221046

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档