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

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

创新互联成都网站建设按需策划设计,是成都网站推广公司,为成都轻质隔墙板提供网站建设服务,有成熟的网站定制合作流程,提供网站定制设计服务:原型图制作、网站创意设计、前端HTML5制作、后台程序开发等。成都网站设计热线:028-86922220

我们最感兴趣的是硬盘在最大负荷下持续的读取和写入速度。为了能够比较准确的测出平均速度,我决定采用先写入一个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的磁盘缓冲机制有关,看来作用还是蛮大的,当然,建议读取测试在重起电脑以后进行。

网页名称:VB.NET测试硬盘速度代码实解读
当前地址:http://www.csdahua.cn/qtweb/news26/508126.html

网站建设、网络推广公司-快上网,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 快上网