vb.net – 哪个更快? ByVal或ByRef?

vb.net – 哪个更快? ByVal或ByRef?,第1张

概述在VB.NET中,它更快地用于方法参数,ByVal或ByRef? 此外,它在运行时消耗更多的资源? (随机存取存储器) 编辑:我阅读this question,但答案不适用或具体不够。 应该根据需求和知识来使用Byval和byref参数,它们如何不按速度工作。 http://www.developer.com/net/vb/article.php/3669066 编辑 回应斯劳的评论 – 在运行时 在VB.NET中,它更快地用于方法参数,ByVal或ByRef?

此外,它在运行时消耗更多的资源? (随机存取存储器)

编辑:我阅读this question,但答案不适用或具体不够。

应该根据需求和知识来使用Byval和byref参数,它们如何不按速度工作。

http://www.developer.com/net/vb/article.php/3669066

编辑

回应斯劳的评论 –

在运行时消耗更多的资源?

参数在堆栈上传递。栈是非常快的,因为它的内存分配只是一个指针增量来保留一个新的“帧”或“分配记录”。大多数.NET参数不超过机器寄存器的大小,所以很少使用任何“堆栈”空间来传递参数。事实上,基本类型和指针都在堆栈上分配。 .NET中的堆栈大小限制为1MB。这应该让你了解参数传递消耗的资源有多少。

你可能会发现这一系列的文章很有趣:

http://www.atalasoft.com/cs/blogs/rickm/archive/2008/04/15/improving-performance-through-stack-allocation-net-memory-management-part-2.aspx

哪个更快? ByVal或ByRef。

很难测量准确和仙女 – 取决于你的测量的上下文,但一个基准,我写了一个方法1亿次出现了以下:

>参考类型 – Passed ByRef:420ms
>参考类型 – Passed ByVal:382ms
>值类型 – 传递ByRef:421ms
>值类型 – 传递ByVal:416ms

Public Sub Method1(ByRef s As String)    Dim c As String = sEnd SubPublic Sub Method2(ByVal s As String)    Dim c As String = sEnd SubPublic Sub Method3(ByRef i As Integer)    Dim x As Integer = iEnd SubPublic Sub Method4(ByVal i As Integer)    Dim x As Integer = iEnd SubSub Main()    Dim s As String = "Hello World!"    Dim k As Integer = 5    Dim t As New Stopwatch    t.reset()    t.Start()    For i As Integer = 0 To 100000000        Method1(s)    Next    t.Stop()    Console.Writeline("Reference Type - ByRef " & t.ElapsedMilliseconds)    t.reset()    t.Start()    For i As Integer = 0 To 100000000        Method2(s)    Next    t.Stop()    Console.Writeline("Reference Type - ByVal " & t.ElapsedMilliseconds)    t.reset()    t.Start()    For i As Integer = 0 To 100000000        Method3(i)    Next    t.Stop()    Console.Writeline("Value Type - ByRef " & t.ElapsedMilliseconds)    t.reset()    t.Start()    For i As Integer = 0 To 100000000        Method4(i)    Next    t.Stop()    Console.Writeline("Value Type - ByVal " & t.ElapsedMilliseconds)    Console.ReadKey()End Sub@H_419_33@  

注释每个方法中的变量和赋值 –

>参考类型 – Passed ByRef:389ms
>参考类型 – Passed ByVal:349ms
>值类型 – Passed ByRef:416ms
>值类型 – 传递ByVal:385ms

可以得出结论,传递引用类型(字符串,类)byval将节省一些时间。您还可以说传递值类型(整数,字节) – byval将节省一些时间。

再次,时间在物质的大计划中可以忽略不计。更重要的是正确使用byval和byref,并理解幕后的情况。在你的例程中实现的算法将会更多地影响你的程序的运行时。

总结

以上是内存溢出为你收集整理的vb.net – 哪个更快? ByVal或ByRef?全部内容,希望文章能够帮你解决vb.net – 哪个更快? ByVal或ByRef?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://www.54852.com/langs/1287312.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-06-09
下一篇2022-06-09

发表评论

登录后才能评论

评论列表(0条)

    保存