0

一位更资深的 PHP 程序员向我解释说,使用 PHP 数组效率低下,因为它会导致额外的数据复制。然后他解释说,通过创建类来保存数据,甚至是数组,您可以获得更少的内存消耗和更高的性能。然后,PHP 不会像数组数组那样被迫复制/深度复制类中的数据。

他还解释说,我要寻找的对象在适当的结构化对象树中比在数组数组中更容易找到。这个我能理解。

问题来了,我知道它们有点模糊。

  • 是否有合适的情况在对象上使用数组数组来存储数据?

  • 将数据存储在对象中总是会更有效率和更高的内存效率吗?

非常感谢你们,我可以编写和分析一堆 PHP 应用程序来解决这个问题,但我相信你们中的很多人已经知道答案。

4

3 回答 3

1

这家伙做了一个测试,似乎没有太大区别:http ://www.rooftopsolutions.nl/blog/148

于 2012-05-20T18:19:53.633 回答
1

数组和类不应该混淆。类代表真实世界的实体及其动作。您不应该为此目的使用数组。关联数组可能支持属性但不支持动作。

这三样东西用数字索引的平凡数组、关联数组和对象的目的是不一样的。使用更好的套件。不要考虑现在的表现。开发软件时,您应该定义需要改进性能的用例。然后开始分析。

于 2012-05-20T18:26:51.413 回答
1

内存消耗/深度复制的区别在于,默认情况下,数组通过值传递给函数(因此,数组被复制)和对象 - 通过引用。由于您也可以通过引用传递数组(明确说明参数是通过引用 - function foo(& $bar)),因此数组与类的内存使用没有太大区别。如前所述,您必须以语义正确的方式使用数组/对象。PHP 不提供struct并且使用类来保存结构化数据通常比关联数组更好,因为您可以声明有效的实际键。但是选择数组与类的原因不是性能原因。

于 2012-05-20T21:36:07.767 回答