续上一篇教程
Dim timeStart,timeEnd As DateTime Dim timeDiff As TimeSpan timeStart = Now '图像处理代码 timeEnd = Now timeDiff = timeEnd - timeStart ListBox1.Items.Add("像素处理:" & timeDiff.TotalMilliseconds)
这是我在 《
vb.net 教程 1-8 日期时间类型1》中所讲过的求时间间隔的方法,希望大家没有忘记。
我们来看看四种处理方法运行的时间:
'统计 'http://blog.csdn.net/uruseibest Private Sub Button9_Click(sender As Object,e As EventArgs) Handles Button9.Click Dim wayArray1 As Single = 0F '一维数组方法处理总共用时(ms) Dim wayArray2 As Single = 0F '二维数组方法处理总共用时(ms) Dim wayPointer As Single = 0F '指针处理方法处理总共用时(ms) Dim wayPixel As Single = 0F '像素处理方法处理总共用时(ms) Dim countArray1 As Integer = 0 '一维数组方法处理总次数 Dim countArray2 As Integer = 0 '二维数组方法处理总次数 Dim countPointer As Integer = 0 '指针处理方法处理总次数 Dim countPixel As Integer = 0 '像素处理方法处理总次数 If ListBox1.Items.Count < 1 Then Exit Sub Dim info As String For i As Integer = 0 To ListBox1.Items.Count - 1 info = ListBox1.Items(i) Select Case info.Substring(0,5) Case "一维数组:" wayArray1 += Single.Parse(info.Substring(5,Len(info.Length - 5))) countArray1 += 1 Case "二维数组:" wayArray2 += Single.Parse(info.Substring(5,Len(info.Length - 5))) countArray2 += 1 Case "指针处理:" wayPointer += Single.Parse(info.Substring(5,Len(info.Length - 5))) countPointer += 1 Case "像素处理:" wayPixel += Single.Parse(info.Substring(5,Len(info.Length - 5))) countPixel += 1 Case Else '不处理 End Select Next MessageBox.Show("一维数组方法,运行 " & countArray1 & "次,平均处理时间:" & wayArray1 / countArray1 & " ms" & ControlChars.CrLf & "二维数组方法,运行 " & countArray2 & "次,平均处理时间:" & wayArray2 / countArray2 & " ms" & ControlChars.CrLf & "指针处理方法,运行 " & countPointer & "次,平均处理时间:" & wayPointer / countPointer & " ms" & ControlChars.CrLf & "像素处理方法,运行 " & countPixel & "次,平均处理时间:" & wayPixel / countPixel & " ms" ) End Sub
居然有几十倍的差距。。。
由于像素处理实在太慢,我只测试了4次。这次的处理效率差距没有处理小图片那么大。
1、2、3、4,分别代表了一维数组、二维数组、内存指针、像素处理,红色方框是处理时大概的cpu占用时间。
总之,效率是第一生产力,大家在处理图片时,尽量使用高效的内存锁定处理吧。
由于.net平台下C#和vb.NET很相似,本文也可以为C#爱好者提供参考。
学习更多vb.net知识,请参看 vb.net 教程 目录