gpt4 book ai didi

performance - 在 dart 中使用对象作为映射键会对性能产生重大影响吗?

转载 作者:行者123 更新时间:2023-12-03 04:23:42 25 4
gpt4 key购买 nike

在 dart 中编写一些代码我最近发现使用某些对象作为映射键更简单的情况。实际上,这段代码是在 web 模式下执行的(编译为 javascript),但最终它也会在 dart VM 模式下使用。

使用对象作为 map 的键是否会对 dart 产生显着的内存/性能影响?

我没有找到很多关于基准测试的资源(https://dart.dev/articles/benchmarking 已失效),所以也欢迎任何方向。

最佳答案

有一些考虑:

内存

由于每个用作键的对象都将被 Map 引用,因此每个对象都不能被垃圾回收,除非 Map本身可以被垃圾收集或 key 已从 Map 中删除.对于每个键的关联值也可以这样说。

至于 Map 用于保存键和值的存储,如果您使用例如,它不应该有任何区别。 String作为键或自定义对象,因为这两种键都将保存为引用。

表现
Map 上的操作性能是关于 == 性能的一个非常重要的问题运算符和 hashCode属性,因为两者都用于 Map 上使用的几个操作。 .

我可以推荐在这里阅读它们:

https://api.dart.dev/stable/2.7.2/dart-core/Object/operator_equals.html

https://api.dart.dev/stable/2.7.2/dart-core/Object/hashCode.html

结论

许多项目使用自定义对象作为 Maps 的键,并且通常在此期间没有问题。事实上,使用自定义对象与使用例如一个 StringString 起作为键也只是一个普通的类有自己的==运算符和 hashCode属性(property)。

关于performance - 在 dart 中使用对象作为映射键会对性能产生重大影响吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61089315/

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