Java中的大矩阵

|                                                                                                                   关闭。这个问题需要细节或明确性。它当前不接受答案。                                                      
已邀请:
        有多种可能性: 如果矩阵稀疏,则将其加载到映射中,而忽略值为零的条目。 如果矩阵的文件版本具有固定大小的记录,则创建一个内存映射的缓冲区并使用索引来访问各个单元。 如果访问模式是顺序的,则只需读取它即可。 等等。 如果您想要更具体的答案,则需要提供更多详细信息;例如文件的表示方式,矩阵稀疏,访问模式是什么,是否需要更新矩阵等。   矩阵不稀疏。它基本上包含3行,均为int。矩阵以
<row1>
1
row3>
的格式存储在文本文件中。我不需要更新它;我只需要对第1行中的值执行许多搜索。 好。 将文件转换为二进制格式。这将使每一行占用相同的字节数,并使随机访问成为可能。 搜索
row1
中的值表明您需要对文件中的列进行排序,以使行在
row1
中排序。 (或者,如果您还需要按原始行号查找行,请在第1列上创建索引。) 然后使用
MappedByteBuffer
将排序/索引/转换后的文件映射到内存中,并通过
IntBuffer
访问它。 映射文件的总大小应在180Mb的范围内,这在如今的典型PC上已经不成问题。     
        我宁愿Map也不使用数组,但是这可能太大了。尝试找出矩阵的哪些部分用于计算,研究一些分而治之/并行矩阵算法,这些算法通常在较小的矩阵中分解矩阵-在结构上或使用矩阵乘法,特征值和矩阵的其他代数性质。然后,您可以执行诸如缓冲和缓存等各种操作来加快对磁盘上数据的访问。     

要回复问题请先登录注册