在 PHP 中获取数组中的元素的时间复杂度是多少?
我不太了解数组是如何在 PHP 中实现的,并且知道对于大多数 OOP 语言来说,对于预定义类型的数组,复杂度是常量时间 O(1) 之一。那么 PHP 的动态类型、扩展数组等有什么用呢?
I've little idea of how arrays are implemented in PHP, and know that for most OOP languages the complexity is one of constant time, O(1), for an array of a predefined type. So what's the deal in PHP with it's dynamic typing, extending arrays, etc.?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
查看 array.c 表明它们是作为哈希表实现的,这意味着通常,查找元素的时间复杂度为 O(1)(如果非常严格,实际上是 O(N),但可能会像 O(log N) 一样糟糕)。
如果有疑问,您可以随时进行测量。创建一个包含 10、100、1000、10000、100000、1000000 等元素的数组并测量性能,将数据外推到函数,您将获得平均性能特征。
Looking at array.c in the PHP source code reveals that they're implemented as hash tables, which means typically O(1) (it's actually O(N) if you're very strict but can be as bad as O(log N)) for looking up an element.
If in doubt, you can always measure though. Create an array of 10, 100, 1000, 10000, 100000, 1000000 etc elements and measure the performance, extrapolate the data to a function and you will have the average performance characteristics.