在 PHP 中获取数组中的元素的时间复杂度是多少?

发布于 2024-08-13 01:51:45 字数 99 浏览 2 评论 0原文

我不太了解数组是如何在 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

简单爱 2024-08-20 01:51:45

查看 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.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文