一直以来在 vb6 下,参数默认都是按照 byref 传送的,(即按地址传送) 而在 .net(c#,vb.net) 下, 参数默认是使用 byval (即按值传送) 传送的,一直没怎么注意。 这些天在优化程序时发现 当传送 大变量时,使用默认方式(byval) 效率相当低 如传入的参数变量类型 是 大字符串,数组,集合,dataset 等 测试的关键代码如下,我传入的字符串并没有特别大,变量越大,使用 byref 效率越高,当然,当传入得变量可以被修改或无其他作用时,可以改用 byref 传 private declare function gettickcount lib "kernel32" () as int32 end function end function private sub button1_click(byval sender as system.object, byval e as system.eventargs) handles button1.click dim teststr as string dim t as int32 t = gettickcount for ii = 1 to 10000 msgbox("byref " & cstr(gettickcount - t)) end sub
private function testbyref(byref aa as string) as string
aa = "1" & aa
testbyref = aa
private function testbyval(byval aa as string) as string
aa = "1" & aa
testbyval = aa
dim newstr as string
dim ii as int32
teststr = "wosdfsdfdsfdsfsfdsfsfsfsfsfsfdsfdsfcvxcvxcvcxvvcxvvvxvcvxv"
newstr = testbyref(teststr)
next
t = gettickcount
for ii = 1 to 10000
newstr = testbyval(teststr)
next
msgbox("byval " & cstr(gettickcount - t))
Java Asp PHP .Net XML C/C++ CGI VB Jsp J2ee J2se J2me EJB Servlet Tomcat Resin Struts Weblogic Eclipse ANT GUI JMS Web servise IDEA Webphere Hibernate Spring Jboss Applet Swing Socket Javamail Perl Ajax P2P 安全 模式 框架 测试 开源 游戏
Windows XP Windows 2000 Windows 2003 Windows Me Windows 9.x Linux UNIX 注册表 操作系统 服务器 应用服务器