阅读背景:

读取文件的两种类型

来源:互联网 
int hugefile_rw(CString strFilePath) { clock_t start, finish; //------------------------------------------------------内存映射方法; start = clock(); //创建或打开文件内核对象; HANDLE fileH = CreateFile(strFilePath.GetBuffer(0), GENERIC_READ|GENERIC_WRITE, FILE_SHARE_READ, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL); if(fileH == INVALID_HANDLE_VALUE) { cout<<"error in CreateFile"<<endl; return -1; } //创建一个文件映射内核对象; HANDLE mapFileH = CreateFileMapping( fileH, NULL, PAGE_READWRITE, 0, 0, TEXT("Resource")); if(mapFileH == NULL) { cout<<"error in CreateFileMapping"<<endl; return -1; } //将文件数据映射到进程的地址空间; char * mapH = (char *)MapViewOfFile( mapFileH, FILE_MAP_ALL_ACCESS, 0, 0, 0); if(mapH == NULL) { cout<<"error in MapViewOfFile"<<endl; return -1; } std::string buffer = mapH; //读取数据; char *buf = mapH; double k; int times = 300000*34; //关闭句柄; UnmapViewOfFile(mapH); CloseHandle(mapFileH); CloseHandle(fileH); finish = clock(); //打印耗时; double d1 = (double)(finish - start)/ CLOCKS_PER_SEC; //------------------------------------------------------传统方法; start = clock(); FILE *fp = fopen("D:\code\棋牌代码\MDY棋牌项目\运行\debug\unicode--2010\res\AllCityData.ini","r"); if(fp == NULL) { cout<<"error in fopen"<<endl; return -1; } for(int i = 1 ;i <= times; i++) { fscanf(fp,"%lf",&k); } fclose(fp); finish = clock(); double d2 = (double)(finish - start)/ CLOCKS_PER_SEC; } int hugefile_rw(CString strFilePath) { clock_t



你的当前访问异常,请进行认证后继续阅读剩余内容。

分享到: