用VB.NET测试硬盘速度

前日在用SiSoftware Sandra 2004测试硬盘性能时突发其想,用自己熟悉的VB.NET测试行不行呢?具体怎么做呢?

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

在VB.NET中创建了一个控制台工程TestHarddisk,然后在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 Date = 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 Date = 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 Date = 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 Date = 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()
End Sub

现在测试。

硬件配置:

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模式,打开所有优化选项。

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

小心!显卡BIOS刷新工具Nvflash变杀手

小心!显卡BIOS刷新工具Nvflash变杀手

2004-01-08■贺思聪■电脑报

前些年流行的CIH病毒曾使无数的主板毁于一旦,你有没有想过采用NVIDIA显示芯片的显卡也受着这样的威胁。

威胁就是来自Nvflash——NVIDIA公司所有显示卡BIOS的通用刷新工具。不少报刊都提到这个工具只能在DOS下运行,但经过笔者验证,4.42版本能够在各个版本的Windows中成功保存、更新显卡BIOS。这给我们带来了极大的便利,省去了制作启动盘的麻烦,但同时也给我们带来了潜在的威胁。

在帮助中看到Nvflash的e参数可以清除EEPROM(电可擦除只读存储器)的内容。由于4.42版在 Windows下也能存取显卡BIOS,所以也可以直接清除显卡BIOS内容。在默认情况下Nvflash能够发出提示音,但使用s参数后就处于静音模式。这样如果联合参数e、s和2,还没有等你反应过来显卡BIOS就被清空了。但此时不要重启电脑,用Nvflash把正确的显卡BIOS文件刷进去,同样不会出现什么问题。但假如你根本不知道,当重新启动电脑的时候你就只能面对黑糊糊的屏幕发呆了。更糟糕的是如果加上参数y,那么在擦除完了之后就立刻重启,根本没有挽救的余地了。

如果你不小心执行了经过伪装并且带参数的Nvflash,那这个东西将成为名副其实的N卡杀手。这里提示大家,可以在系统的“命令提示符”下运行Nvflash -c来检查显卡EEPROM是否在它支持的范围之内,如果是的话就要加以提防了。如果你真的成为了幸运儿也无所谓,找一张PCI显卡引导电脑再刷新坏显卡的BIOS就行了,具体步骤不再赘述。

如何用vb.net下载到完整的web页

在网络上找了很多关于网页下载的程序但都不能完整地得到web页的内容,以下这个函数解决了这个问题。

Private Function GetSource(ByVal url As String) As String
Try
Dim httpReq As System.Net.HttpWebRequest 'HttpWebRequest 类对 WebRequest 中定义的属性和方法提供支持',也对使用户能够直接与使用 HTTP 的服务器交互的附加属性和方法提供支持。
Dim httpResp As System.Net.HttpWebResponse ' HttpWebResponse 类用于生成发送 HTTP 请求和接收 HTTP 响'应的 HTTP 独立客户端应用程序。
Dim httpURL As New System.Uri(url)
httpReq = CType(WebRequest.Create(httpURL), HttpWebRequest)
httpReq.Method = "GET"
httpResp = CType(httpReq.GetResponse(), HttpWebResponse)
Dim reader As StreamReader = _
New StreamReader(httpResp.GetResponseStream, System.Text.Encoding.GetEncoding("GB2312")) '如是中文,要设置编码格式为“GB2312”。
Dim respHTML As String = reader.ReadToEnd() 'respHTML就是网页源代码
Return respHTML
httpResp.Close()
Catch e As Exception
Console.WriteLine("GetSource出现问题:{0},{1}", e.Message, url)
End Try
End Function

PDU解码器(vb.net)

解释手机的PDU码,可以自动识别短信息的格式并得出相应的发送地址、接受时间等。上面一个框填写PDU串,按OK以后会显示相应的信息。源代码里有我写的SMS类,比较实用。但由于初步设计类,SMS类还设计的不是很理想。还望高手指点。
下载地址:[download id=”25”]

SIEMENS SUPPORT TOOL SOURCE CODE

注:. 本程序专门为西门子M55书写,而且到现在为止我无法更正连接问题,导致许多手机连接不上。所以连接部分代码仅作为参考。
. 整个软件只有核心功能,界面不完善。可能造成一些问题。
. 你可以自由使用和修改此软件。但当你修正一些Bug时,请寄给我一份。核心的Class可作为其他程序参考。

Note:

  1. This program wrote for Siemens M55 Cellphone. But until now I can’t successfully connect to all M55 phone due to the Connection problem. So the code of Connection portion is only for reference.
  2. This whole program has core functions and I have no time to write a better visual. Some part will course failures.
  3. You can use and modify this program freely. But when you fixed some bugs, please send me the copy. The core class can be references of other programs.

下载地址:[download id=”26”]
谢谢下载和关注!
Thanks for download!