社区
语言基础/算法/系统设计
帖子详情
关于 Var 和 Result!!
lynchhei
2014-07-21 02:02:29
procedure proA(var A: Integer);
begin
Inc(A);
end;
function proB(A: Integer): Integer;
begin
Result := Inc(A);
end;
求问哪个函数效率要高那么一点点?
...全文
245
3
打赏
收藏
关于 Var 和 Result!!
procedure proA(var A: Integer); begin Inc(A); end; function proB(A: Integer): Integer; begin Result := Inc(A); end; 求问哪个函数效率要高那么一点点?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
3 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
明空皓月
2014-07-25
打赏
举报
回复
第一种直接操作A得到结果,第二种要重新开辟内存并复制一份数据操作,效率肯定不如第一种。 二楼挺详细的
武稀松
2014-07-21
打赏
举报
回复
procedure proA(var A: Integer); begin Inc(A); end; function proB(A: Integer): Integer; begin Inc(a); Result := A; end; 第一个效率要高一点点,第二个函数一开始的的begin会被编译到如下结果 产生一个integer类型的局部变量,然后把非var,const,out的参数的内容传给局部变量. 以后使用的A实际上是这个局部变量.除非你的A声明成var 然后还要再把A复制到返回值中. 也就是多了两次复制动作. 你这个例子效率差得还不太明显 如果你的A是比较大的数据结构,比如结构体效率差别更明显 比如 procedure proA(var A: TImageDosHeader); begin inc(a.e_cblp); end; 产生的代码 inc(a.e_cblp); 005D7338 66FF4002 inc word ptr [eax+$02] Unit4.pas.28: end; 005D733C C3 ret function proB(A: TImageDosHeader): TImageDosHeader; begin inc(a.e_cblp); Result := A; end; 产生的代码 005D7340 56 push esi 005D7341 57 push edi 005D7342 83C4C0 add esp,-$40 //开辟64个字节的局部变量 005D7345 8BF0 mov esi,eax 005D7347 8D3C24 lea edi,[esp] 005D734A B910000000 mov ecx,$00000010 //告诉ecx,复制次数 005D734F F3A5 rep movsd //重复复制ecx($10)次,每次复制4个字节,也就是64个字节,把参数复制到局部变量 Unit4.pas.32: inc(a.e_cblp); 005D7351 66FF442402 inc word ptr [esp+$02] Unit4.pas.33: Result := A; 005D7356 8BFA mov edi,edx 005D7358 8BF4 mov esi,esp 005D735A B910000000 mov ecx,$00000010 //告诉ecx,复制次数 005D735F F3A5 rep movsd //重复复制ecx($10)次,每次复制4个字节,也就是64个字节,把局部变量复制到返回值 Unit4.pas.34: end; 005D7361 83C440 add esp,$40 005D7364 5F pop edi 005D7365 5E pop esi 005D7366 C3 ret
luxuewei5214
2014-07-21
打赏
举报
回复
我自己用后面一种多些,除非返回值有多个才用前面的方法,效率的话,说不上来谁好谁坏
var
result
= eval("(" + data + ")"); 这个问题还没有解决 !!!!!!
在JS中将JSON的字符串解析成JSON数据格式,一般有两种方式: 1.一种为使用eval()函数。 2. 使用Function对象来进行返回解析。 使用eval函数来解析,并且使用jquery的each方法来遍历 用jquery解析JSON数据的方法,作为jquery异步请求的传输对象,jquery请求后返回的结果是json对象,这里考虑的都是服务器返回JSON形
js 判断对象是否为空字符串
var
ageForCheckbox; // 不定义
var
result
= !ageForCheckbox || parseInt(ageForCheckbox) < 41 console.log("
result
= " +
result
); //true
var
ageForCheckbox = null; // 空
var
result
= !ageForCheckbox || pa
Python实现向量自回归(
VAR
)模型——完整步骤
废话不多说,先开始分享: 1. 首先啥是
VAR
模型,我这里简略通俗的说一下,想看代码的童鞋直接跳到第3部分就好了: 以金融价格为例,传统的时间序列模型比如ARIMA,ARIMA-GARCH等,只分析价格自身的变化,模型的形式为: 其中称为自身的滞后项。 但是
VAR
模型除了分析自身滞后项的影响外,还分析其他相关因素的滞后项对未来值产生的影响,模型的形式为: 其中就是其他因子的滞后项......
JS中!!的用法
var
o={flag:true};
var
test=!!o.flag;//等效于
var
test=o.flag||false; alert(test); 由于对null与undefined用!操作符时都会产生true的结果, 所以用两个感叹号的作用就在于, 如果明确设置了o中flag的值(非 null/undefined/0""/等值),自然test就会取跟o.flag一样的值; 如果...
perl中模式匹配关于=~、!~
模式匹配操作符=~、!~ =~检验匹配是否成功:$
result
= $
var
=~ /abc/;若在该字符串中找到了该模式,则返回非零值,即true,不匹配则返回0,即false。!~则相反。 这两个操作符适于条件控制中,如: if ($question =~ /please/) { print ("Thank you for being polite!\n")
语言基础/算法/系统设计
16,743
社区成员
33,237
社区内容
发帖
与我相关
我的任务
语言基础/算法/系统设计
Delphi 语言基础/算法/系统设计
复制链接
扫一扫
分享
社区描述
Delphi 语言基础/算法/系统设计
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章