我再做一个测试u盘读写速度的程式,我的大致思路是:
int t1=GetTickCount();
HANDLE hwrite=CreateFile(......);//在u盘创建一个文件
char wbuf[1024*512];
for(int i=0;i<32;i++)
WriteFile();
t2=GetTickCount();
CloseHandle(hwrite)
int writeSpeed=1024*512*32/(t2-t1);
.
.
.
int t3=GetTickCount();
HANDLE hread=CreateFile(...);//打开该u盘的文件
char* rbuf=new char[1024*512*32];
ReadFile(hread,rbuf,1024*512*32,&dw,NULL);
delete []rbuf;
CloseHandle(hread);
t4=GetTickCount();
int readspeed=1024*512*32/(t4-t3);
可是这样问题出现了,我写的速度是正常的而读的速度不正常(很快很快),但是我如果读取大量的文件(比如是1024*1024*32*10),读取的速度就正常了,而那样时间太长了。
请高手指点是什么原因.
我也试过用CopyFile的方式,但是速度太不稳定,只有写文件的方式速度还比较稳定。
我看过vb的用binaryread()和readbytes().但是我不会用vb,不知道vc中能用什么函数相当于这两个函数。
请大虾指点用什么方式测试。
int t1=GetTickCount();
HANDLE hwrite=CreateFile(......);//在u盘创建一个文件
char wbuf[1024*512];
for(int i=0;i<32;i++)
WriteFile();
t2=GetTickCount();
CloseHandle(hwrite)
int writeSpeed=1024*512*32/(t2-t1);
.
.
.
int t3=GetTickCount();
HANDLE hread=CreateFile(...);//打开该u盘的文件
char* rbuf=new char[1024*512*32];
ReadFile(hread,rbuf,1024*512*32,&dw,NULL);
delete []rbuf;
CloseHandle(hread);
t4=GetTickCount();
int readspeed=1024*512*32/(t4-t3);
可是这样问题出现了,我写的速度是正常的而读的速度不正常(很快很快),但是我如果读取大量的文件(比如是1024*1024*32*10),读取的速度就正常了,而那样时间太长了。
请高手指点是什么原因.
我也试过用CopyFile的方式,但是速度太不稳定,只有写文件的方式速度还比较稳定。
我看过vb的用binaryread()和readbytes().但是我不会用vb,不知道vc中能用什么函数相当于这两个函数。
请大虾指点用什么方式测试。
我也知道是这个原因,
所以我先读取较大(我用num兆表示吧)的文件但是不用delete []buf;
然后在读取较小的数据,再先delete小的数据 然后再delete []buf;
这样得到的结果也比较稳定,
但是有两个问题,1,测试时间太长(因为要读取较大的文件);
2,电脑的配置不同的话num的值也不同,我也设置ini档。但不方便。
所以这种方式不好。
请高手指点指点!!!(我在线等哦!)
怎么用设备名创建句柄啊!
比如,是H:\\吗pfilename="H:\\1.txt";
sprintf(filerd,"%s%test.file",pfilename);
%test.file是什么意思知道吗?
就发生错误DMA是硬件是的说法吧
它和软件有关系吗?
我找找看看