vb.net 教程 5-14 图像处理之内存处理基础6

前端之家收集整理的这篇文章主要介绍了vb.net 教程 5-14 图像处理之内存处理基础6前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
上一篇教程

代码中,我使用了这样一组代码,简单计算图像处理需要的时间:

  1. Dim timeStart,timeEnd As DateTime
  2. Dim timeDiff As TimeSpan
  3. timeStart = Now
  4.  
  5. '图像处理代码
  6.  
  7. timeEnd = Now
  8. timeDiff = timeEnd - timeStart
  9. ListBox1.Items.Add("像素处理:" & timeDiff.TotalMilliseconds)

这是我在 《 vb.net 教程 1-8 日期时间类型1》中所讲过的求时间间隔的方法,希望大家没有忘记。
我们来看看四种处理方法运行的时间:
为了大家看的更清楚,我做了一个简单的统计,具体代码如下:
  1. '统计
  2. 'http://blog.csdn.net/uruseibest
  3. Private Sub Button9_Click(sender As Object,e As EventArgs) Handles Button9.Click
  4. Dim wayArray1 As Single = 0F '一维数组方法处理总共用时(ms)
  5. Dim wayArray2 As Single = 0F '二维数组方法处理总共用时(ms
  6. Dim wayPointer As Single = 0F '指针处理方法处理总共用时(ms)
  7. Dim wayPixel As Single = 0F '像素处理方法处理总共用时(ms
  8.  
  9. Dim countArray1 As Integer = 0 '一维数组方法处理总次数
  10. Dim countArray2 As Integer = 0 '二维数组方法处理总次数
  11. Dim countPointer As Integer = 0 '指针处理方法处理总次数
  12. Dim countPixel As Integer = 0 '像素处理方法处理总次数
  13.  
  14. If ListBox1.Items.Count < 1 Then Exit Sub
  15. Dim info As String
  16. For i As Integer = 0 To ListBox1.Items.Count - 1
  17. info = ListBox1.Items(i)
  18. Select Case info.Substring(0,5)
  19. Case "一维数组:"
  20. wayArray1 += Single.Parse(info.Substring(5,Len(info.Length - 5)))
  21. countArray1 += 1
  22. Case "二维数组:"
  23. wayArray2 += Single.Parse(info.Substring(5,Len(info.Length - 5)))
  24. countArray2 += 1
  25. Case "指针处理:"
  26. wayPointer += Single.Parse(info.Substring(5,Len(info.Length - 5)))
  27. countPointer += 1
  28. Case "像素处理:"
  29. wayPixel += Single.Parse(info.Substring(5,Len(info.Length - 5)))
  30. countPixel += 1
  31. Case Else
  32. '不处理
  33. End Select
  34. Next
  35. MessageBox.Show("一维数组方法,运行 " & countArray1 & "次,平均处理时间:" & wayArray1 / countArray1 & " ms" & ControlChars.CrLf &
  36. "二维数组方法,运行 " & countArray2 & "次,平均处理时间:" & wayArray2 / countArray2 & " ms" & ControlChars.CrLf &
  37. "指针处理方法,运行 " & countPointer & "次,平均处理时间:" & wayPointer / countPointer & " ms" & ControlChars.CrLf &
  38. "像素处理方法,运行 " & countPixel & "次,平均处理时间:" & wayPixel / countPixel & " ms"
  39. )
  40. End Sub

每个方法运行数次后,统计的结果如下:
居然有几十倍的差距。。。
特别说明的是,以上图片像素为 700*525,文件大小为252KB
我这里还测试了一张图片,像素为3840*2160,文件大小为 3.62MB,处理结果如下:

由于像素处理实在太慢,我只测试了4次。这次的处理效率差距没有处理小图片那么大。

同时我也看了每个方法在运行时侯cpu占用的情况:
1、2、3、4,分别代表了一维数组、二维数组、内存指针、像素处理,红色方框是处理时大概的cpu占用时间。

总之,效率是第一生产力,大家在处理图片时,尽量使用高效的内存锁定处理吧。


由于.net平台下C#和vb.NET很相似,本文也可以为C#爱好者提供参考。

学习更多vb.net知识,请参看 vb.net 教程 目录

猜你在找的VB相关文章