【发布时间】:2014-06-11 15:19:32
【问题描述】:
我有问题。我在 Java、Eclipse 中工作。我的程序计算了一些数学物理,我需要绘制过程的动画(Java SWT 包)(一些流体动力学)。问题是二维的,因此每次迭代都会返回二维数字数组。一次迭代需要相当长的时间,并且从一次迭代到另一次迭代的迭代变化需要时间,因此在程序运行时动态显示图片似乎是个坏主意。在这种情况下,我的想法是存储一个三维数组,其中第三个索引代表时间,并在计算结束时构建动画。但在这种情况下,由于我希望程序准确,我需要大量迭代,因此程序很容易达到最大数组大小。所以问题是:如何避免创建如此庞大的数组或如何避免数组大小的限制?我想过创建一个特殊的文件来存储数据,然后从中读取,但我不确定这一点。你有什么想法吗?
【问题讨论】:
-
你有多少内存?我敢打赌,在遇到数组大小限制之前,您会用完内存。您可以尝试分布式解决方案,例如 memcached/redis,但您必须尝试提出比数组更聪明的数据结构。
-
@instop: 试一试,如果有效,那么可以,否则再来一次。至少尝试一下。
-
我不建议向您的数组添加维度。虽然它们更易于阅读,但它们从数据中抽象出来;每个抽象都会花费性能。如果您可以选择使用原始二进制数据,并尽一切可能只加载您需要的内容。运行几次迭代并将几个“帧”时间存储在一个文件中,然后用一个新文件重复。要显示,请加载第一个现有文件并按顺序显示它们,直到用完要显示的完整文件。
-
本质上,应用分而治之的概念。
-
感谢回复,我试试。
标签: java arrays overflow physics modeling