有没有办法在Windows中确定可移动的驱动器速度而不实际读取文件。如果我必须读取文件,需要读取多少才能获得半精确的速度(例如,确定设备是USB2还是USB1)?
编辑:为了澄清,USB2和USB1就是一个例子。这些可能是Compact Flash,可能是SSD,可能是可移动驱动器。我试图尽快确定这一点,因为它对应用程序的响应性有实际影响。
编辑:还应该澄清,这必须以编程方式完成。它可能是用C ++完成的。
编辑:提升答案是我想要的(虽然我没有在C ++中编写任何WMI)。但我需要知道我必须检查哪些属性来确定相对速度。我不需要准确的速度(就像我说的USB1和USB2之间的速度差异),但我需要知道它是否会是SLLOOOOWWW。
答案 0 :(得分:2)
您可能有更好的结果查询操作系统以获取有关硬件的信息,而不是尝试从数据传输计时信息中对其进行反向工程。
例如,相同的传输速度并不一定意味着两个设备正在使用相同的技术,但是如果您的应用可以获得此类信息,其他因素(例如搜索时间)将提高准确性。
为了在完成此工作时保持应用程序响应,请尝试异步执行调用并向用户提供某种进度指示器。举个例子,看看WinDirStat如何处理这个进度指示(我喜欢分析每个目录时的pac-man动画)。
答案 1 :(得分:2)
WMI - Physical Disks Properties是我发现的一篇文章,它至少可以帮助您弄清楚您所连接的内容。我预见到桌子上的东西会把特定的制造商和模型等同于速度,这并不像你希望的那样简单。
答案 2 :(得分:0)
几兆字节,我会说。传输速度可以开始缓慢,然后随着传输的进行加速。由于文件大小也存在差异(单个1GB文件的传输速度比1GB的较小文件快得多)。
最好的方法是将文件复制到设备或从设备复制文件,并计算代码所需的时间。 USB1速度是11Mb / s(我认为),USB2是480Mb / s(注意这些是整个总线的数字,而不是每个端口,因此同一总线上的多个设备将改变实际数字)。
答案 3 :(得分:0)
在Windows中,您可以通过选择查看 - >确定连接的USB设备是否为USB2。 “设备管理器中的设备连接”,然后检查设备是否位于USB2控制器(USB2增强型主机控制器)下。
请注意,这并不意味着您的设备实际上会以更高的速度运行,但您仍需要实际的吞吐量测试。 Sisoft Sandra基准测试软件列出了其功能列表中支持的可移动硬盘驱动器。
编辑:由于原始问题的澄清,我提交了一个新答案。答案 4 :(得分:0)
尝试TerraCopy并将一个大文件〜400mb - 500mb从设备复制到设备,您将看到速度。
答案 5 :(得分:0)
考虑可能影响数据传输速度的事情数量:
您可能会根据您希望看到的设备的各种特性来处理一些启发式算法,但总的来说,没有好办法确定总线,媒体,文件系统和数据的特定组合的传输速度访问模式而不实际测量它。如果您决定进行衡量,请尝试尽可能地模拟您的最终访问模式。
答案 6 :(得分:0)
我要借Raymond Chen's晶球并说你真的不想要这个。您可能希望使用异步I / O.如果您在一秒钟内没有得到I / O的结果,您想要检查发生了多少。取这个数字的倒数,你就可以给用户一个很好的估计。
如果一秒钟后什么也没发生,你可能会感到惊讶。但即使这样也会发生。例如,硬盘可能需要一秒钟才能启动。只需每秒轮询一次,直到事情发生。