2008-10-08 39 views
4

有沒有什麼辦法可以在Windows中確定可移動驅動器的速度,而無需實際讀取文件。如果我必須讀取文件,需要讀取多少才能獲得半精確的速度(例如,確定設備是USB2還是USB1)?任何方式來確定在Windows中的可移動驅動器的速度?

編輯:只是爲了澄清,USB2和USB1就是一個例子。這些可能是Compact Flash,可能是SSD,可能是可移動驅動器。我試圖儘可能快地確定它,因爲它對應用程序的響應性有實際影響。

編輯:還應該澄清,這必須以編程方式完成。它可能會在C++中完成。

編輯:Boost的答案是我尋找的東西(儘管我沒有在C++中編寫任何WMI)。但我需要知道我必須檢查哪些屬性來確定相對速度。我不需要確切的速度(就像我說的USB1和USB2之間的速度差異),但我需要知道它是否會SLLOOOOWWW。

+0

作爲獲取信息的方法,WMI通常很慢。關於你做的第二個/查詢。 – Vincent 2008-11-19 02:37:23

回答

2

WMI - Physical Disks Properties是我發現的一篇文章,它至少可以幫助你弄清楚你連接了什麼。我預見了將表格等同於特定製造商和型號的表格與速度的區別,這不是您希望的解決方案。

+0

恐怕工作不太好。如果通過USB1集線器連接,相同的USB2磁盤可能會慢很多。這恰好是你應該警告用戶的時候。 – MSalters 2008-10-10 15:17:36

0

幾兆字節,我會說。傳輸速度可以開始緩慢,然後隨着傳輸的進行而加速。由於文件大小也有差異(單個1GB文件的傳輸速度將比1GB的小文件快得多)。

這樣做的最佳方法是將文件複製到設備或從設備複製文件,以及時間與您的代碼需要多長時間。 USB1速度是11Mb/s(我認爲),而USB2是480Mb/s(注意那些是整個總線的數字,不是每個端口,所以同一總線上的多個設備將改變實際的數字)。

0

在Windows中,您可以通過從設備管理器中選擇查看 - >「通過連接的設備」來確定連接的USB設備是否爲USB2,然後檢查設備是否位於USB2控制器(USB2增強型主控制器)下。

請注意,這並不意味着您的設備實際上會以更高的速度運行,但您仍然需要實際的吞吐量測試。 Sisoft Sandra基準測試軟件列出了其功能列表中支持的可移動硬盤驅動器。

編輯:由於澄清原來的問題,我提交了一個新的答案。

0

嘗試TerraCopy並從設備中複製一個大文件〜400mb - 500mb,然後您將看到速度。

2

您可能有更好的結果查詢操作系統以獲取有關硬件的信息,而不是試圖從數據傳輸時序信息中對其進行逆向工程。

例如,相同的傳輸速度並不一定意味着兩個設備正在使用相同的技術,儘管其他因素(如搜索時間)會提高準確性(如果這些信息可用於您的應用程序)。

爲了在應用程序完成這項工作時保持應用程序響應,請嘗試異步執行調用併爲用戶提供某種進度指示器。作爲一個例子,看看WinDirStat如何處理這個進度指示(我喜歡每個目錄被分析的pac-man動畫)。

0

考慮的事情可能影響數據傳輸速度的數量:

  • 用於將設備連接到系統總線的速度。除非通過USB1連接,否則這不太可能成爲您的限制因素。
  • 對於硬盤驅動器,轉速和尋找時間的問題。 7200 RPM驅動器將以比5400 RPM驅動器更快的速度讀寫數據塊。
  • 光學和磁性驅動器通常在不使用時會減速,所以第一次訪問的次數將比第二次訪問次數多。
  • 在特定設備上使用的文件系統。
  • 緩存數據和文件系統元數據。元數據被緩存的越少,磁盤或光驅越需要查明數據的位置。
  • 數據訪問模式。訪問少量大型連續文件幾乎總是比訪問散佈在磁盤周圍的大量小文件要快。
  • 文件系統碎片

你也許可以根據你期望看到的設備的各種特性上班了一些啓發,但一般是要弄清楚傳輸速度的特定組合沒有什麼好辦法的總線,媒體,文件系統和數據訪問模式,而沒有實際測量它。如果您決定測量,儘可能模擬您的最終訪問模式。

0

我要借Raymond Chen's水晶球,並說你真的不想要這個。您可能想要使用異步I/O。如果你在一秒鐘內沒有得到你的I/O的結果,你想檢查一下發生了多少。取這個數字的倒數,你有一個很好的估計引用給用戶。

如果一秒之後什麼都沒有發生,您可能會感到驚訝。但即便如此,也可能發生。例如,硬盤可能需要一秒鐘才能啓動。只是每秒輪詢一次,直到發生了一些事情