问题描述
我编了一个usb速率测试软件,Winform,复制一个4.6兆的文件到D盘,但两次复制,速率相差太大。这是为什么呢?跪求大神指点!这是复制程序:privatevoidUsb1Set(){if(cmb1.Text!=null)//获取待复制文件的下拉列表。{lbact1.Text=null;//复制时间lbafs1.Text=null;//文件大小lbats1.Text=null;//速率isDone[0]=false;//是否复制完成的标志我要同时测四个usb,这只是第一个file[0]=newFileInfo(cmb1.Text);//获取复制的文件的路径fileSize[0]=file[0].Length/1024;/./计算文件大小lbafs1.Text=fileSize[0].ToString()+"KB";dest[0]=newFileInfo(str+"\des1\"+file[0].Name);//声明复制目标地址Threadthread1=newThread(newThreadStart(Usb1));//复制线程thread1.Start();}}privatevoidUsb1(){lbProg1.Text="正在复制...";watch1.Restart();//初始化计时器stringfileName=dest[0].DirectoryName+"\"+dest[0].Name;file[0].CopyTo(fileName,true);//复制文件watch1.Stop();//停止计时copyTime[0]=watch1.Elapsed.TotalSeconds;//获取复制时间lbact1.Text=copyTime[0].ToString()+"s";lbats1.Text=(fileSize[0]/copyTime[0]/1024).ToString("0.00")+"Mb/s";//计算速率lbProg1.Text="复制完毕!";isDone[0]=true;File.Delete(fileName);//删除文件。因为要不停复制删除,以检测usb的性能。}
解决方案
解决方案二:
。。。。E。。。你的计算方式有问题吧。。。不带这么玩的
解决方案三:
被缓存了??
解决方案四:
可能是被windows优化了2个文件同名而且修改时间一致,直接不复制就结束了
解决方案五:
我还记得有一次跟同学互传单机版的魔兽2个多G,用QQ传,10秒不到就传了50%了结果可能是因为速率太高,QQ进程死了,重新登陆再传,一下就慢了100倍
解决方案六:
这种情况只有100M内的文件才这样,1.75g这么大的文件就不会发生这种情况。
解决方案七:
对于计算方式,哪里错了吗?
解决方案八:
我找到答案了,就是因为缓存。
解决方案九:
测速度应该每次写随机数据进去