gpt4 book ai didi

typescript - 知道 key 的 Typescript Record 访问的复杂性是什么?

转载 作者:行者123 更新时间:2023-12-05 02:29:47 25 4
gpt4 key购买 nike

我读了in this question Javascript 的 Map 的检索/访问复杂度为 O(1)。 typescript 有 Records它有一个优势:被打字。但是,我想知道 Typescript 的 Records 是否为我们提供了相同的访问性能。我们应该使用纯 JS 映射来优化数据访问速度吗?

最佳答案

I read in this question that Javascript's Map has O(1) complexity for retrieval/access.

这个问题具体是关于 Map 在 V8 JavaScript 引擎(2015 年)中的实现。您不能将其推广到其他实现中的映射,并且规范不保证 O(1)。 All that's guaranteed是访问将是子 linear关于 Map 中条目的数量。

Typescript has Records which have an advantage: being typed. However, I was wondering if Typescript's Records give us the same access performance.

TypeScript 的 Record 类型纯粹是对 JavaScript 对象的编译时抽象。所以问题是:访问 JavaScript 对象属性的时间是否至少与访问 JavaScript Map 中的条目的访问时间一样好?

这取决于,但通常。事实上,对于具有稳定属性集的对象,在重要的情况下它可能会快得多,因为在重要的情况下,现代 JavaScript 引擎将对象编译为运行时生成的类,这些类具有属性的静态槽,因此访问这些属性是一个恒定时间操作 (O(1))。

但是,如果您的对象的内容随时间变化(属性集不是相对静态的),则对对象所做的优化是不合适的,您最好使用 map

请注意,除了性能之外,还有其他原因可以选择一个对象而不是一个 map ,或者一个 map 而不是一个对象。例如,Map 的键可以是任何东西,但对象的键只能是字符串或符号。访问 Map 中的值需要调用函数;不是这样的对象属性。等等

More on MDN .

关于typescript - 知道 key 的 Typescript Record 访问的复杂性是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72059658/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com