我正在處理一個小程序,處理相當大(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