2013-10-13 32 views
-2

我有一个使用大数组时运行速度非常慢的程序。使用大数组大小时的代码非常慢

我在最终代码中使用了int[3000][3000]String[27000]String[5000]数组。此代码需要永久运行。这可能是因为阵列需要太多空间吗?

+2

什么部分是慢?它是初始化,还是程序花了很长时间来处理数组内容? –

+0

初始化是永恒的。 –

+0

在你的'int [3000] [3000]上寻找嵌套循环'两个嵌套循环会很好,但是第三个循环会导致性能下降。 – dasblinkenlight

回答

2

这取决于你的算法的复杂性一个很好的协议在其上操纵数据。用。这决定了在开始向其中投入更多数据时需要多少时间(通过使数组越来越大)。如果您只是迭代数据,那么它将按照O(n)的顺序,这意味着它将与数据给出量成正比;所以如果你将数组长度加倍,那么执行程序需要两倍的时间。比如说,比较每一个元素与另一个元素,就意味着它的大小是O(n^2),所以如果你将数组的长度加倍,那么处理它们需要四倍的时间。

如果你的算法只是为了让你的计算机处理复杂,你将不得不发布你的程序给我们。

另请参阅:Big O notation

-3

很多因素:

  1. 处理器的处理速度。
  2. 内存分配
  3. 3000 * 3000 * 4个字节= 36个* 10.00.000字节= 338 MB
  4. 使用列表
+4

3k * 3k * 4个字节是35 mb。你不能认真对待这个答案。 –

+0

说到使用列表(这实际上无助于提高OP的速度),我编辑了你的答案以便实际使用它。 –

+0

谢谢Simon ................ – Jimmy

相关问题