之前写了个opencv读取大矩阵的问题,这次遇到一个更大的矩阵,不想用opencv格式化读文件,故直接采用c++读取。
首先c++读取文件的几种方式可以参考“探寻C++最快的读取文件的方案”(1)一文,而其中提到的内存映射方法可以参考“windows笔记-内存映射文件”(2)一文。
输入对象是一个50×71028的浮点数矩阵,保存为.txt文件,共55mb,单纯采用fstream格式化读取需要1分钟,而采用scanf读入需要15秒。故决定采取文(1)中介绍的读入整个文件再处理的方法,代码如下:
int main()
{
int start = clock();
readdata1();
printf("%.3lf\n",double(clock()-start)/CLOCKS_PER_SEC);
printf("%f",a[0][3]);
return 0;
}