青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

牽著老婆滿街逛

嚴以律己,寬以待人. 三思而后行.
GMail/GTalk: yanglinbo#google.com;
MSN/Email: tx7do#yahoo.com.cn;
QQ: 3 0 3 3 9 6 9 2 0 .

使用內存映射文件來提高你程序的性能

來源:http://www.pconline.com.cn/pcedu/empolder/gj/vc/0509/699389.html

  本人在學習《WINDOWS核心編程》的時候對JEFFREY大師提到的一個小程序寫了兩個版本來比較性能,該程序的原始需求是這樣的:對一個大文件進行倒序,也就是將一個文件頭變成尾,尾變成頭。

  使用的方法有很多種,這里使用兩個方法來比較,主要是突出使用內存映射文件好處;兩種方法為:內存映射文件方法,I/O讀寫的緩存辦法。

  第一種辦法是創建內存映射文件對象,然后將該對象映射到進程的地址空間中,再讀取文件內容,然后倒序,再寫入文件。

  第二中方法是,將文件內容讀入一個大的緩沖區,然后倒序,再寫入文件,中間對原來的文件刪除,然后重新寫入。

  程序編寫如下

  第一種方法,內存映射文件方式
BOOL FileReverse(PCTSTR pszPathName)
{
HANDLE hFile 
= CreateFile(pszPathName,GENERIC_WRITE|GENERIC_READ,0,NULL
,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,NULL);
if(hFile == INVALID_HANDLE_VALUE)
{
printf(
"File could not be opened.");
return FALSE;
}


DWORD dwFileSize 
= GetFileSize(hFile,NULL);

HANDLE hFileMap 
= CreateFileMapping(hFile,NULL,PAGE_READWRITE,0,
dwFileSize
+sizeof(char),NULL);

if(hFileMap == NULL){
CloseHandle(hFile);
return FALSE;
}


PVOID pvFile 
= MapViewOfFile(hFileMap,FILE_MAP_WRITE,0,0,0);

if(pvFile == NULL){
CloseHandle(hFileMap);
CloseHandle(hFile);
return FALSE;
}


PSTR pchAnsi 
= (PSTR)pvFile;
pchAnsi[dwFileSize
/sizeof(char)]=0;
_strrev(pchAnsi);

pchAnsi 
= strchr(pchAnsi,'\n');
while(pchAnsi != NULL){
*pchAnsi++ ='\r';
*pchAnsi++ ='\n';
pchAnsi 
= strchr(pchAnsi,'\n');
}


UnmapViewOfFile(pvFile);
CloseHandle(hFileMap);

SetFilePointer(hFile,dwFileSize,NULL,FILE_BEGIN);
SetEndOfFile(hFile);
//實際上不需要寫入了。
CloseHandle(hFile);

return TRUE;
}


第二中方法,使用緩存的方式
BOOL FileReverseNoMap(PCTSTR pszPathName)
{
HANDLE hFile 
= CreateFile(pszPathName,GENERIC_WRITE|GENERIC_READ,0,NULL
,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,NULL);
if(hFile == INVALID_HANDLE_VALUE)
{
printf(
"File could not be opened.");
return FALSE;
}


DWORD dwFileSize 
= GetFileSize(hFile,NULL);
//CloseHandle(hFile);
char *readBuf = new char[dwFileSize+1];
DWORD nRead 
= 0,nRet =0;
while(nRead<dwFileSize){
if(ReadFile(hFile,readBuf+nRead,dwFileSize-nRead,&nRet,NULL) ==TRUE)
{
nRead
+= nRet;
}

else
{
printf(
"Can read the file!");
CloseHandle(hFile);
}

}


PSTR pchAnsi 
= (PSTR)readBuf;
pchAnsi[dwFileSize
/sizeof(char)]=0;
_strrev(pchAnsi);

pchAnsi 
= strchr(pchAnsi,'\n');
while(pchAnsi != NULL){
*pchAnsi++ ='\r';
*pchAnsi++ ='\n';
pchAnsi 
= strchr(pchAnsi,'\n');
}

CloseHandle(hFile);
DeleteFile(pszPathName);

HANDLE hWriteFile 
= CreateFile(pszPathName,GENERIC_WRITE|GENERIC_READ,0,NULL
,CREATE_NEW,FILE_ATTRIBUTE_NORMAL,NULL);
WriteFile(hWriteFile,readBuf,dwFileSize,
&nRet,NULL);
CloseHandle(hWriteFile);

delete readBuf;

return TRUE;
}

 我運行了幾次,比較結果如下:
文件大小(byte) 1方法時間(ms) 2方法時間(ms)
25416 0 0
101664 0 0
406656 0 10
1219968 10 30
3202416 21 100
9607248 80 551
67250736 581 5568

  本人測試機器的CPU是迅池1.5的筆記本,內存為712MB

  通過上面的測試我們可以看到使用內存映射文件的好處,在文件內存越大這種優勢就體現的越明顯,其中主要的原因是:

  內存映射文件直接將文件的地址映射到進程的地址空間中,那么操作文件就相當于在內存中操作一樣,省去了讀和寫I/O的時間;第二種方式是必須這么做(READFILE,WRITEFILE),這個過程是很慢的。

posted on 2007-11-05 01:55 楊粼波 閱讀(342) 評論(0)  編輯 收藏 引用

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            亚洲三级毛片| 久久亚洲综合网| 欧美在线日韩在线| 亚洲欧美视频| 小黄鸭精品密入口导航| 99亚洲精品| 亚洲一区二区三区精品视频| 日韩视频在线免费观看| 亚洲人成人77777线观看| 亚洲国产婷婷综合在线精品| 亚洲精品免费电影| 亚洲夜间福利| 久久久久久亚洲综合影院红桃| 久久综合电影| 欧美有码视频| 夜夜嗨av一区二区三区中文字幕| 亚洲国内自拍| 在线亚洲精品| 久久国产主播| 亚洲电影在线观看| 亚洲麻豆一区| 亚洲欧美日韩国产一区二区| 午夜精品久久久久久99热| 久久久久久久波多野高潮日日| 欧美经典一区二区| 国产日韩欧美不卡| 在线观看欧美成人| 中国女人久久久| 久久精品夜色噜噜亚洲aⅴ| 久久网站免费| 亚洲人成在线观看一区二区| 亚洲欧美999| 欧美成人dvd在线视频| 国产精品家庭影院| 亚洲日本在线观看| 久久精品欧美| 一本大道av伊人久久综合| 久久精品123| 欧美性做爰毛片| 亚洲人成网站在线观看播放| 欧美一区国产二区| 日韩视频不卡| 欧美成人高清| 欧美一区二区三区四区在线| 国产视频一区三区| 99视频精品免费观看| 蜜臀久久99精品久久久久久9| 在线综合视频| 欧美日韩三级电影在线| 欧美激情久久久| 欧美大片免费观看| 欧美一进一出视频| 国产欧美91| 欧美亚洲在线视频| 中文欧美日韩| 欧美深夜福利| 一区二区久久久久久| 亚洲国产精品ⅴa在线观看 | 亚洲精品少妇30p| 久久一区精品| 久久久人人人| 一区二区三区无毛| 久久成年人视频| 亚洲欧美日本伦理| 国产精品久久久久久久浪潮网站 | 国产拍揄自揄精品视频麻豆| 一区二区三区欧美激情| 日韩视频一区二区三区在线播放免费观看 | 久久精品国产亚洲精品 | 蜜桃av综合| 久久尤物视频| 亚洲福利电影| 亚洲第一福利视频| 美玉足脚交一区二区三区图片| 精品成人乱色一区二区| 久久久久久久综合色一本| 久久国产精品网站| 在线成人激情| 欧美多人爱爱视频网站| 欧美国产日韩免费| 亚洲欧美国产不卡| 香蕉视频成人在线观看| 黑人巨大精品欧美一区二区小视频| 久久人人超碰| 欧美寡妇偷汉性猛交| 亚洲无吗在线| 欧美亚洲网站| 亚洲黄色av一区| 亚洲一区二区三| 韩曰欧美视频免费观看| 亚洲第一视频网站| 国产精品高清在线| 久久久久久一区| 欧美女同视频| 亚洲狼人综合| 亚洲一区在线看| 久久亚裔精品欧美| 欧美精品色一区二区三区| 亚洲一本大道在线| 久久美女性网| 亚洲一区二三| 久久综合亚州| 欧美在线短视频| 欧美成人黑人xx视频免费观看| 亚洲女ⅴideoshd黑人| 久久久青草青青国产亚洲免观| 亚洲一区二区三区四区五区午夜| 欧美淫片网站| 先锋影音网一区二区| 麻豆精品视频在线观看视频| 亚洲欧美国产另类| 免费h精品视频在线播放| 午夜在线视频一区二区区别| 麻豆久久婷婷| 欧美一级理论性理论a| 麻豆国产精品777777在线| 久久精品亚洲精品| 欧美日韩伦理在线免费| 亚洲盗摄视频| 亚洲电影视频在线| 久久精品一区二区三区中文字幕| 亚洲在线观看视频网站| 欧美高清一区| 亚洲国产成人精品久久| 国产欧美一区二区精品忘忧草| 亚洲精品国产视频| 日韩视频三区| 99热免费精品| 日韩一级黄色大片| 免费日韩精品中文字幕视频在线| 欧美自拍偷拍| 国产精品久久久久aaaa| 亚洲日本电影| 亚洲国产精品国自产拍av秋霞 | 亚洲靠逼com| 久久精品国产999大香线蕉| 亚洲在线免费观看| 欧美好骚综合网| 欧美国产第二页| 1769国产精品| 欧美成人激情视频| 亚洲黄色在线观看| 在线观看日产精品| 久久久夜精品| 亚洲第一福利在线观看| 亚洲乱码视频| 欧美日韩国产综合视频在线观看中文 | 国产一区二区三区四区在线观看 | 亚洲欧洲av一区二区三区久久| 欧美午夜在线一二页| 亚洲精品在线一区二区| 99精品欧美一区二区三区| 欧美区国产区| 亚洲一区二区免费| 久久一本综合频道| 亚洲精品123区| 欧美日韩精品一区二区天天拍小说| 亚洲毛片在线看| 午夜久久一区| 狠狠色狠狠色综合人人| 美女国内精品自产拍在线播放| 欧美大片免费观看在线观看网站推荐| 亚洲电影免费| 欧美日韩视频在线一区二区| 一本大道av伊人久久综合| 欧美在线国产精品| 精品69视频一区二区三区| 久久永久免费| 在线视频免费在线观看一区二区| 亚洲欧美日韩一区| 一区二区三区在线视频免费观看 | 国产精品一级二级三级| 欧美亚洲系列| 91久久在线| 羞羞视频在线观看欧美| 在线精品亚洲| 欧美亚一区二区| 免费在线观看精品| 亚洲淫性视频| 亚洲欧洲三级| 久久久精彩视频| 一区二区三区视频在线看| 伊人男人综合视频网| 亚洲香蕉在线观看| 农夫在线精品视频免费观看| 亚洲欧美日韩天堂| 亚洲精品一区在线观看香蕉| 国产伦精品一区二区三| 欧美aⅴ99久久黑人专区| 亚洲一二三四久久| 欧美韩国在线| 久久在线精品| 欧美在线黄色| 亚洲一区二区精品在线观看| 国产精品网站一区| 欧美大片第1页| 久久精品国产在热久久| 亚洲精品久久久一区二区三区| 欧美一级成年大片在线观看| 99这里只有久久精品视频|