如何在具有良好性能的函数中使大型数组可用

时间:2012-05-07 09:26:04

标签: php performance refactoring

我有一个和平的先前代码,它在循环中执行。这种代码的和平需要一个大型数组,但仅用于读取而不是用于操作目的。我在循环之前生成了这个数组。

现在我想将此代码移动到一个函数中,以便再次使用它是一些其他脚本,但我不知道如何以一种干净的方式,但仍然有一个良好的性能:

  • 每次在函数本身生成这个大型数组都会很糟糕,因为它始终是相同的数组并且会产生不必要的开销。
  • 我不想使用全局数组,因为这是不好的做法
  • 因此,每次调用该函数时,我认为将它作为一个参数传递是最好的。

我也不太喜欢那个最后一个选项,因为它使参数列表混乱,我不确定通过这个引起的开销。据我了解,每次都会复制数组 - 因此通过引用传递它是否是个好主意(使用&运算符)?

4 个答案:

答案 0 :(得分:3)

一个真正关心表现的人应该

避免在性能关键代码中处理大型数组。

而不是加速一个本质上缓慢的过程。

因此,在不知道 REAL CASE (数组的目的,处理和内容)的情况下,唯一的答案可能是:

因此,将数组转换为数据库并仅选择必要的数据。

这是对这样一般问题的一般答案。

答案 1 :(得分:1)

您可以序列化数组并在文件中写入序列化。 因此,读取该文件会更快,反序列化并在以后的代码中使用它。

答案 2 :(得分:1)

使用OO-Programming,使用两种方法创建一个类,一个用于生成数组,第二个用于使用数组进行计算。使用像Singleton这样的模式来保护您的对象是唯一的实例或使用静态变量。创建一个包以在不同的脚本/项目之间共享此类。

由于问题非常笼统,所以答案非常抽象。

答案 3 :(得分:-2)

我认为通过引用传递int是足够好的,但有时会通过引用警告生成时间调用传递。可能会导致您以后遇到麻烦。