VB.NET測試硬盤速度代碼實(shí)解讀
VB.NET編程語言的用途相比其他語言來說,還是有些不同之處。其中最大的特點(diǎn)就是可以實(shí)現(xiàn)對移動(dòng)設(shè)備的操作。前日在用SiSoftware Sandra 2004測試硬盤性能時(shí)突發(fā)其想,用自己熟悉的VB.NET測試硬盤速度行不行呢?具體怎么做呢?#t#
我們最感興趣的是硬盤在最大負(fù)荷下持續(xù)的讀取和寫入速度。為了能夠比較準(zhǔn)確的測出平均速度,我決定采用先寫入一個(gè)1GB的文件再讀取出來的辦法??紤]到不要讓更多的任務(wù)花在循環(huán)上,我首先建立起一個(gè)足夠大的緩沖區(qū),然后往磁盤寫入這個(gè)緩沖的內(nèi)容,從而使硬盤達(dá)到最大的負(fù)荷。考慮到Windows的讀取機(jī)制,硬盤測試不太準(zhǔn)確,此程序的讀取部分只能在第一次運(yùn)行時(shí)使用,運(yùn)行次數(shù)越多測試也不準(zhǔn)確,而寫入測試多次運(yùn)行以后依然能夠保持準(zhǔn)確性?,F(xiàn)在就開始動(dòng)手。
在VB.NET測試硬盤速度中創(chuàng)建了一個(gè)控制臺工程TestHarddisk,然后在Sub Main中寫入下列程序。
- Sub Main()Sub Main()
- Dim I As Int32
- Dim f As New FileStream("E:\
BigFile.big", FileMode.Create) - Dim fw As New BinaryWriter(f)
- Dim fr As New BinaryReader(f)
- Dim Size As Int32 = 1024 *
1024 * 1024 - 1? 'File size = 1GB - Dim bufSize As Int32 = 30 *
1024 * 1024???? 'Buffer Size = 30MB - Dim jLast As Int32 = bufSize - 1
- Dim j As Int32
- Dim Bytes(bufSize) As Byte
- Dim StartWrite As DateDate =
Date.Now - Console.WriteLine("Write Start at
{0}", StartWrite) - Console.WriteLine("Creating")
- For I = 0 To Size Step bufSize '1GB
- fw.Write(Bytes)
- Next
- Dim EndWrite As DateDate = Date.Now
- Dim TimePassed As TimeSpan = EndWrite
.Subtract(StartWrite) - Console.WriteLine("Write End at
{0}", EndWrite) - Console.WriteLine("Time passed:
{0}", TimePassed) - Console.WriteLine("Speed:{0}",
1000 / TimePassed.TotalSeconds) - fw.Flush()
- Dim StartRead As DateDate = Date.Now
- Console.WriteLine("Read Start at
{0}", StartRead) - Console.WriteLine("Reading")
- For I = 0 To Size Step bufSize
- Bytes = fr.ReadBytes(bufSize)
- Next
- Dim EndRead As DateDate = Date.Now
- TimePassed = EndRead.Subtract
(StartRead) - Console.WriteLine("Read End at {0}",
EndRead) - Console.WriteLine("Time passed:
{0}", TimePassed) - Console.WriteLine("Read speed:{0}",
1000 / TimePassed.TotalSeconds) - Console.ReadLine()
- fw.Close()
現(xiàn)在開始VB.NET測試硬盤速度。
硬件配置:
Athlon 2500+(running at 1.8G)
EPOX 8RDA3+ nForce2主板
512DDR 400(running at 400MHz)
ATA100 Seagate 7200.7 80GB 2MB
軟件配置:
Windows 2003 Server Standard Edition
全套最新的WHQL驅(qū)動(dòng)程序
Visual Studio 2003,編譯選擇Realse模式,打開所有優(yōu)化選項(xiàng)。
第一次運(yùn)行VB.NET測試硬盤速度得寫入速度43MB/s,第二次測得42MB/s,第三次41MB/s與Sisoftware測試得的結(jié)果43MB/s相差不大,達(dá)到了理想的效果。然而讀取測試就變態(tài)了,第一次64MB/s,與Sissoftware測試多了5MB/s左右,第二次達(dá)到了1096MB/s,第三次1123MB/s,這和Windows的磁盤緩沖機(jī)制有關(guān),看來作用還是蠻大的,當(dāng)然,建議讀取測試在重起電腦以后進(jìn)行。