我正在处理一个小程序,处理相当大(4-5 MB),矩阵形(数字值存储为N * M行和列)ASCII文件:一种有效的方法来读取ASCII文件
1 2 3
4 5 6
7 8 9
etc.
我注意到,老式的C文件输入法:
csFile = fopen("file.dat","r");
while(fscanf(csFile, "%lf", &Point)!=EOF) {
}
fclose(csFile);
比最基本的C++实现快得多(230毫秒相比〜1500毫秒存储大约3MB文件230k数值):
ifstream myfile ("file.dat");
while(myfile >> Point) {
}
myfile.close();
为了简单起见,我省略了循环内部的数据操作函数,但即使这些“裸露”的例子也显示了C型I/O的几乎七倍增强。为什么会有如此巨大的性能差异?使用C++流/函数读取这些文件有更快的方法吗?
http://stackoverflow.com/questions/605839/c-and-c-file-io – 2012-08-17 15:11:24
http://stackoverflow.com/questions/1924530/mixing-cout-and-printf为更快的输出 http://stackoverflow.com/questions/1736267/c-cout-printing-slowly – BoBTFish 2012-08-17 15:12:46
是230ms足够快为您?如果是这样,是否有你不想使用'fscanf'的理由? – 2012-08-17 16:15:41