【发布时间】:2012-05-13 20:29:31
【问题描述】:
我已经阅读了大约 120k 字的文件,因此我尝试快速完成。 看过:
int x = setvbuf(fp, (char *)NULL, _IOFBF, BSZ);
assert( x == 0 && fp != NULL );
选项,但需要一秒钟以上(1 mb 文件) 所以现在我尝试了这种方法:
fopen_s (&pFile,DICT,"rb");
if (pFile==NULL) {fputs ("File error",stderr); exit (1);}
// obtain file size:
fseek (pFile , 0 , SEEK_END);
lSize = ftell (pFile);
rewind (pFile);
// allocate memory to contain the whole file:
buffer = (char*) malloc (sizeof(char)*lSize);
// copy the file into the buffer:
result = fread (buffer,1,lSize,pFile);
我如何从这里继续? 缓冲区包含一个单词列表,我想尽可能快地一个一个地获取它们 因为我用这些词构建了一个多重地图。
谢谢!
【问题讨论】:
-
你的限制是什么(即你需要多快)?到目前为止,您尝试了哪些方法,结果超出了该性能水平有多远?
-
是否存在需要将两个单词用一个空格分隔的情况,需要将其视为一个单词?这就是两个空格的原因吗?每个单词前面总是有两个空格还是每个单词后面总是有两个空格?还是只有非空词之间的两个空格词分隔符?
标签: c++ performance file buffer multimap