硬盘写速度测试器
相对论万岁2013/01/13软件综合 IP:湖北
之前有人发了个测试内存速度的程序
我再来个测试硬盘写速度的程序[s:274]
如图:(机械盘)
程序测试结果:
QK%DTMZ$K[V@~%U~Z2]DW45.jpg
写入文件时资源管理器显示的速度:
OW1S)HS5PO969V828][R90C.jpg
平时复制文件时,速度一般都30M/s
那是因为硬盘一边读一边写
测试时最好关闭不必要的程序,以免其他程序读盘,影响速度
一般测试机械盘选择1024M
固态盘没有,谁试试???100G就是为他准备的……
也可以测试U盘等移动设备
有些慢速的U盘可以选择1~10M
欢迎测试
另外,现在还没有想到如何删除测试文件,c语言函数试过了,
连system(“del……”)也试过了
甚至想到了自动建立一个批处理,
但是都无法直接删除……
提示进程无法访问……[s:218][s:245]
谁有好办法那???
程序和源码:
attachment icon 硬盘写速度测试器.zip 9.10KB ZIP 23次下载
今年自学的c语言,代码肯定有很多地方可以优化

请大家贴出测试结果


欢迎提出意见!
+47  科创币    20!Dopaminor    2013/01/13 蛋疼东西来了...  欢迎
+10  科创币    最高主机泡泡    2013/01/13 也学C语言,佩服一下,,,到现在还是头晕,明天就要考试了,,,郁闷,代码也看不懂了,,,
+25  科创币    孤独的酒精灯    2013/01/13
+50  科创币    phpskycn    2013/01/15 多SY,少YY
来自:计算机科学 / 软件综合
13
已屏蔽 原因:{{ notice.reason }}已屏蔽
{{notice.noticeContent}}
~~空空如也
最高主机泡泡
11年5个月前 IP:未同步
487844
第十八行第三十一行为什么要用条件空置的for语句呢?直接用if不是更省事吗?还省了个break。。。
我也是初学,有错误尽管指出啊,,,也许有什么特殊用途我没发现。。。
(这是用什么编译器编的?MinGW?还是VC++?反正我的VS2012写的C++程序都要一个msvcr110d.dll的运行库,是个debug库,且不在Vc2010运行库中,请问怎么能编译出不要调试库的程序?生成选项卡下的选项都试过了,都不管用,,,用dev-c++和MinGW命令行编译都没问题,可是很喜欢VS2012,感觉很方便,,有什么办法吗?)
+15
科创币
redeemer1001
2013-01-13
好了 折腾完LZ的程序 开始复习~
+1
科创币
novakon
2013-01-16
新建一个空的c++工程,然后在工程中新建一个cpp文件,编译试试。
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
redeemer1001
11年5个月前 IP:未同步
487878
回 1楼(baiwenglong) 的帖子
握手 同是明天考试 我上午9点考试 现在还没复习 [s:274]
+15
科创币
最高主机泡泡
2013-01-13
我们下午考啊啊啊啊。。。安慰,加分,,,
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
celeron533
11年5个月前 IP:未同步
487916
文件没有被正确关闭,所以还是删不掉 Untitled.png
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
redeemer1001
11年5个月前 IP:未同步
487918
LZ的程序最大问题是 fwrite写入的时候是写入到写入缓存的 应该用write代替(open\\close代替fopen\\fclose) 具体自行查这两个函数
除此之外
1 没有对输入字符进行核审(或者说不够严格) 随便输入两个以上字母就陷入死循环了
2 无法识别大写字母的盘符
3 if(diskname=='c') strcpy(filename, "c:disktest.test"); 这段写得太烂了!
4 if(fp=(fopen(filename,"wb"))==NULL) if的条件永远都是TRUE!注意括号的位置
至于无法删除 我估计是因为"c:disktest.test"这个根本不是正确的文件地址!正确是"c:\\disktest.test"(注意这里没有转义符,源代码要针对“\\”加上转义符变成“\\\\”)
正确地址用remove()函数轻松解决

我修改了LZ的程序修复完善了以上问题 修改处加入了注释

attachment icon 硬盘写速度测试器 修改By Redeemer1001.7z 41.30KB 7Z 17次下载
待完善的部分:
我在本机的西数笔记本硬盘上测得100M/s的速度,而金士顿 V200+ SSD上测得70M/s的速度 与正确成绩有较大出入
我觉得原因是写入的实现不够好 因为我不了解malloc而且我得复习了所以没处理 LZ加油~
PS:我花了1KCB下载LZ的程序 给我加回来哦~
+10
科创币
相对论万岁
2013-01-15
感谢,感谢! 自己都绝对那一段写得烂……
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
phpskycn
11年5个月前 IP:未同步
488024
回 楼主(相对论万岁) 的帖子
BOOL DeleteFile(

     LPCTSTR lpFileName  // pointer to name of file to delete  
    );
int remove( const char *filename);
都可以删除,请仔细检查参数是否正确。
感觉要直接I/O操作才能测得真实的速度--
另外只需检查盘符的合法性即可,再自己生成目标位置。。。
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
相对论万岁作者
11年5个月前 IP:未同步
488465
那几个判断盘符的句子自己都感觉很烂……刚刚学C才几个月……
关键是如何检测盘符是否合法呢???
+1
科创币
redeemer1001
2013-01-15
其实更好的方法是检测所有的磁盘并列出盘符给用户选择
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
相对论万岁作者
11年5个月前 IP:未同步
488469
回 5楼(phpskycn) 的帖子
试过remove
删除失败……
记得貌似最初调试的时候,用system("del……");成功删除了……
后来一直出问题,
我想,如果写入部分专门成一个函数,最后用exit退出试试?……
主要的问题是:进程访问文件,所以无法删除(用360木马例外……)
最终试过用批处理结束“测试器”进程,但是仍然无法直接删掉,提示另一个进程正在访问……
不过在cmd里头键入del命令可以删除,不知道原因
至于有无\\,好像没有多大关系,因为文件在根目录,系统可以正常访问(xp可能会出错……)
我的这个程序写硬盘的时候,从任务管理器看,速度是用“撸大湿”的两倍……
至于I/O操作,影响应该不大,写盘的时候,电脑明显变卡,机械盘是这样,另一个程序读/写盘,必然会影响到结果
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
phpskycn
11年5个月前 IP:未同步
488473
回 7楼(相对论万岁) 的帖子

DWORD WINAPI GetLogicalDriveStrings(
  _In_   DWORD nBufferLength,
  _Out_  LPTSTR lpBuffer
);

XXXXXXXXXXXXXXXXXXXXXXXXX/zh-cn/library/windows/desktop/aa364975(v=vs.85).aspx
通过该函数获取盘符列表

UINT WINAPI GetDriveType(
  _In_opt_  LPCTSTR lpRootPathName
);

再通过该函数检查磁盘类型,排除不一定可写的磁盘(软驱/光驱)
最后获取有效的盘符列表。
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
phpskycn
11年5个月前 IP:未同步
488475
回 7楼(相对论万岁) 的帖子
建议不要过度依赖命令行
掌握Win API可以做更多事情……
I/O操作这个问题稍微复杂一点。Windows NT下用户模式的进程的中断请求级(IRQL)是最低的,很可能被内核代码打断,因而测得的结果存在很大的不确定性。
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
novakon
11年5个月前 IP:未同步
488689
打开一个文件的时候,这个文件就被“占用”了,使用完之后必须在程序中将其“释放”。之前的内存测试程序也是一样的道理,测试完成之后释放内存。不释放内存看上去也还可以,关掉程序就自动释放了,但是如果一个人不关掉程序而重复多次运行,内存就会爆掉。

没有人生下来就会写程序的,我也是断断续续写了5 6 年程序才这个水平
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
novakon
11年5个月前 IP:未同步
488693
回 1楼(baiwenglong) 的帖子
在这里选择 多线程 或者 多线程调试
不要选择 多线程DLL


如果还是不行,再讨论。


afsasd.jpg
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
相对论万岁作者
11年5个月前 IP:未同步
488758
回 10楼(novakon) 的帖子
这个我也知道,关键是如何释放?
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论

想参与大家的讨论?现在就 登录 或者 注册

所属专业
上级专业
同级专业
相对论万岁
进士 学者 机友 笔友
文章
49
回复
1322
学术分
1
2012/03/18注册,6个月3天前活动
暂无简介
主体类型:个人
所属领域:无
认证方式:手机号
IP归属地:未同步
文件下载
加载中...
{{errorInfo}}
{{downloadWarning}}
你在 {{downloadTime}} 下载过当前文件。
文件名称:{{resource.defaultFile.name}}
下载次数:{{resource.hits}}
上传用户:{{uploader.username}}
所需积分:{{costScores}},{{holdScores}}下载当前附件免费{{description}}
积分不足,去充值
文件已丢失

当前账号的附件下载数量限制如下:
时段 个数
{{f.startingTime}}点 - {{f.endTime}}点 {{f.fileCount}}
视频暂不能访问,请登录试试
仅供内部学术交流或培训使用,请先保存到本地。本内容不代表科创观点,未经原作者同意,请勿转载。
音频暂不能访问,请登录试试
支持的图片格式:jpg, jpeg, png
插入公式
评论控制
加载中...
文号:{{pid}}
投诉或举报
加载中...
{{tip}}
请选择违规类型:
{{reason.type}}

空空如也

加载中...
详情
详情
推送到专栏从专栏移除
设为匿名取消匿名
查看作者
回复
只看作者
加入收藏取消收藏
收藏
取消收藏
折叠回复
置顶取消置顶
评学术分
鼓励
设为精选取消精选
管理提醒
编辑
通过审核
评论控制
退修或删除
历史版本
违规记录
投诉或举报
加入黑名单移除黑名单
查看IP
{{format('YYYY/MM/DD HH:mm:ss', toc)}}