VB.NET测试硬盘速度代码实解读

开发 后端
VB.NET测试硬盘速度其实是可以实现的。作为开发人员来说,只有想不到的没有做不到的。下面我们就来看看这一特殊实现技巧。

VB.NET编程语言的用途相比其他语言来说,还是有些不同之处。其中最大的特点就是可以实现对移动设备的操作。前日在用SiSoftware Sandra 2004测试硬盘性能时突发其想,用自己熟悉的VB.NET测试硬盘速度行不行呢?具体怎么做呢?#t#

我们最感兴趣的是硬盘在最大负荷下持续的读取和写入速度。为了能够比较准确的测出平均速度,我决定采用先写入一个1GB的文件再读取出来的办法。考虑到不要让更多的任务花在循环上,我首先建立起一个足够大的缓冲区,然后往磁盘写入这个缓冲的内容,从而使硬盘达到最大的负荷。考虑到Windows的读取机制,硬盘测试不太准确,此程序的读取部分只能在第一次运行时使用,运行次数越多测试也不准确,而写入测试多次运行以后依然能够保持准确性。现在就开始动手。

在VB.NET测试硬盘速度中创建了一个控制台工程TestHarddisk,然后在Sub Main中写入下列程序。

  1. Sub Main()Sub Main()  
  2. Dim I As Int32  
  3. Dim f As New FileStream("E:\
    BigFile.big", FileMode.Create)  
  4. Dim fw As New BinaryWriter(f)  
  5. Dim fr As New BinaryReader(f)  
  6. Dim Size As Int32 = 1024 * 
    1024 * 1024 - 1? 'File 
    size = 1GB 
  7. Dim bufSize As Int32 = 30 * 
    1024 * 1024???? 'Buffer 
    Size = 30MB 
  8. Dim jLast As Int32 = bufSize - 1  
  9. Dim j As Int32  
  10. Dim Bytes(bufSize) As Byte  
  11. Dim StartWrite As DateDate = 
    Date.Now  
  12. Console.WriteLine("Write Start at 
    {0}", StartWrite)  
  13. Console.WriteLine("Creating")  
  14. For I = 0 To Size Step bufSize '1GB  
  15. fw.Write(Bytes)  
  16. Next  
  17. Dim EndWrite As DateDate = Date.Now  
  18. Dim TimePassed As TimeSpan = EndWrite
    .Subtract(StartWrite)  
  19. Console.WriteLine("Write End at 
    {0}", EndWrite)  
  20. Console.WriteLine("Time passed:
    {0}", TimePassed)  
  21. Console.WriteLine("Speed:{0}", 
    1000 / TimePassed.TotalSeconds)  
  22. fw.Flush()  
  23. Dim StartRead As DateDate = Date.Now  
  24. Console.WriteLine("Read Start at 
    {0}", StartRead)  
  25. Console.WriteLine("Reading")  
  26. For I = 0 To Size Step bufSize  
  27. Bytes = fr.ReadBytes(bufSize)  
  28. Next  
  29. Dim EndRead As DateDate = Date.Now  
  30. TimePassed = EndRead.Subtract
    (StartRead)  
  31. Console.WriteLine("Read End at {0}", 
    EndRead)  
  32. Console.WriteLine("Time passed:
    {0}", TimePassed)  
  33. Console.WriteLine("Read speed:{0}", 
    1000 / TimePassed.TotalSeconds)  
  34. Console.ReadLine()  
  35. fw.Close() 

 

现在开始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驱动程序

Visual Studio 2003,编译选择Realse模式,打开所有优化选项。

第一次运行VB.NET测试硬盘速度得写入速度43MB/s,第二次测得42MB/s,第三次41MB/s与Sisoftware测试得的结果43MB/s相差不大,达到了理想的效果。然而读取测试就变态了,第一次64MB/s,与Sissoftware测试多了5MB/s左右,第二次达到了1096MB/s,第三次1123MB/s,这和Windows的磁盘缓冲机制有关,看来作用还是蛮大的,当然,建议读取测试在重起电脑以后进行。

责任编辑:曹凯 来源: 博客园
相关推荐

2010-01-14 18:22:05

VB.NET硬盘速度测

2010-01-13 09:31:39

VB.NET窗体打印

2010-01-14 09:55:06

VB.NET IEnu

2010-01-19 17:03:25

VB.NET可执行语句

2010-01-08 10:48:05

VB.NET多线程

2010-01-20 14:32:12

VB.NET转换运算符

2010-01-11 11:02:27

VB.NET调用存储过

2010-01-13 15:01:13

VB.NET操作MyS

2010-01-18 16:58:29

VB.NET Over

2010-01-11 17:12:12

VB.NET事务处理

2010-01-11 17:49:36

VB.NET硬盘序列号

2010-01-18 14:47:42

VB.NET获取环境变

2010-01-08 15:41:36

VB.NET窗口关闭

2010-01-08 10:37:50

VB.NET数据库

2010-01-11 18:21:22

VB.NET获取硬盘信

2010-01-20 13:19:01

VB.NET错误处理

2010-01-18 17:37:32

VB.NET文本框处理

2010-01-07 17:51:36

VB.NET实现Sin

2010-01-19 18:06:14

VB.NET发送邮件

2009-11-03 10:18:46

VB.NET继承
点赞
收藏

51CTO技术栈公众号