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


How to make a large array usable within a function with good performance

我有一个在循环中执行的前硬脑代码的平静。这种代码的平静需要一个大数组,但仅用于读取而不是操作目的。我在循环之前生成此数组一次。

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

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

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

真正关心性能的人应该

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

而不是玩弄加快一个本质上缓慢的过程的把戏。

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

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

这是对这样一个一般性问题的一般性回答。

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

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

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

我想通过引用传递它就足够了,但有时通过引用警告生成时间调用传递。以后可能会给您带来麻烦。