主题:大数组中只有离散元素怎么处理?
我在编一个程序,里面要多次调用一个函数 Function pnj(i1,i2,i3,i4,i5,i6,i7)
由于pnj计算起来比较费时,于是想把每次算好了存起来,存到数组 real*16 A(i1,i2,i3,i4,i5,i6,i7) 中。问题是矩阵太大,有100*17*10*10*17*19*19 这么大,内存不够。
我估计这么大矩阵中真正存到的元应该也不到万分之一。请教各位,应当如何构建一个合理的数据结构,来存储pnj的结果,提高运算效率呢?
我想了两个比较笨的办法,一个考虑是定义一个超大的指针的数组,每个指针指向real*16 B(100000),B中储存每一次算的结果。这样可以把16字节的矩阵变成4字节的矩阵,可以稍微小一些,不知道是否可行。
另一个是存在real*16 B(100000)中,并在integer i1b(100000),i2b... 等中存入相应坐标信息。但是如此的话,每一次寻找都要遍历B中的n个元素,或许会更不效率。
各位有何高见?先多谢了。
由于pnj计算起来比较费时,于是想把每次算好了存起来,存到数组 real*16 A(i1,i2,i3,i4,i5,i6,i7) 中。问题是矩阵太大,有100*17*10*10*17*19*19 这么大,内存不够。
我估计这么大矩阵中真正存到的元应该也不到万分之一。请教各位,应当如何构建一个合理的数据结构,来存储pnj的结果,提高运算效率呢?
我想了两个比较笨的办法,一个考虑是定义一个超大的指针的数组,每个指针指向real*16 B(100000),B中储存每一次算的结果。这样可以把16字节的矩阵变成4字节的矩阵,可以稍微小一些,不知道是否可行。
另一个是存在real*16 B(100000)中,并在integer i1b(100000),i2b... 等中存入相应坐标信息。但是如此的话,每一次寻找都要遍历B中的n个元素,或许会更不效率。
各位有何高见?先多谢了。