由于用到的txt存放的数据有几十万行,用getline来读取文件非常慢,搜索了一下可以来优化读取文件的方法。
据说用内存映射读取文件速度快,试了一下,但是发现要分行处理数据时,速度还是挺慢的。
有关内存映射的介绍,参考别人博客。
http://blog.csdn.net/wcyoot/article/details/7363393
/
///创建镜像文件来读取文件,提高速度
///
void useMapFileReadText(){
HANDLE hFile = NULL, hFileMap = NULL;
char * lpbMapAddress = NULL;
int nFileSize = 0, nLeftSize = 0;
if(hFile == NULL)
{
hFile = CreateFile("data.txt", GENERIC_READ, 0, NULL,
OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
if(hFile == INVALID_HANDLE_VALUE)
{
printf("打开文件失败");
}
}
if(hFileMap == NULL)
{
hFileMap=CreateFileMapping(hFile, NULL, PAGE_READONLY, 0, 0, NULL);
if(hFileMap==NULL)
{
OutputDebugString(&#