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

版权声明:本文为博主原创文章,转载请在显著位置标明本文出处以及作者网名,未经作者允许不得用于商业目的。
续上一篇教程

 

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

 

        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


每个方法运行数次后,统计的结果如下:

居然有几十倍的差距。。。

特别说明的是,以上图片像素为 700*525,文件大小为252KB

我这里还测试了一张图片,像素为3840*2160,文件大小为 3.62MB,处理结果如下:

 

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

 

同时我也看了每个方法在运行时侯cpu占用的情况:

1、2、3、4,分别代表了一维数组、二维数组、内存指针、像素处理,红色方框是处理时大概的cpu占用时间。

 

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

 

 

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

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

 

 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 13
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 13
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值