找回密码
 点一下
查看: 1032|回复: 8

关于判断的效率问题

[复制链接]
发表于 2009-1-10 16:28:21 | 显示全部楼层 |阅读模式
如果一个触发里含有多个判断,以下两种方式哪个更有效率?
[jass]
if a==1 then
   if b==2 then
      if c==3 then
      endif
   endif
endif
[/jass]

[jass]
if a==1 then
endif
if b==2 then
endif
if c==3 then
endif
[/jass]
发表于 2009-1-10 16:31:24 | 显示全部楼层
第一种。
(第一个判断成立后,才会检查第二个判断,第二个判断成立后,才会检查第三个判断)
(而第二种,不管什么情况,都需要检查三个判断)
回复

使用道具 举报

发表于 2009-1-10 16:32:41 | 显示全部楼层
引用楼主緋桜于2009-01-10 16:28发表的 关于判断的效率问题 :
如果一个触发里含有多个判断,以下两种方式哪个更有效率?
[jass]
if a==1 then
   if b==2 then
      if c==3 then
.......

这两个是完全不同的效果,不知道你是如何把他们放在一起比较的

有什么意义呢?
回复

使用道具 举报

 楼主| 发表于 2009-1-10 16:36:32 | 显示全部楼层
引用第2楼马甲君于2009-01-10 16:32发表的  :


这两个是完全不同的效果,不知道你是如何把他们放在一起比较的

有什么意义呢?

嗯,仅仅是想知道有一大串东西需要判断的时候(现在先不管它们有没有继承关系),使用哪种方法会更有效率

还有一种情况
[jass]
if a==1 then
//do something
else
if a==2 then
//do something
else
if a==3 then
//do something
endif
endif
endif
[/jass]

[jass]
if a==1 then
endif
if a==2 then
endif
if a==3 then
endif
[/jass]

这两种情况下哪个更有效率呢
回复

使用道具 举报

发表于 2009-1-10 16:53:20 | 显示全部楼层
还是第一种。
因为第一个判断成立时,就不用检查第二、三个判断了。
第二个判断成立时,就不用检查第三个判断了。
而第三种,不管什么情况,都需要检查三个判断。
回复

使用道具 举报

 楼主| 发表于 2009-1-10 17:09:21 | 显示全部楼层
果然是这样么~~~还好写判断的时候没按第二种来写~~~
回复

使用道具 举报

发表于 2009-1-10 21:26:42 | 显示全部楼层
其实jass有elseif关键字的,不需要把else和if分开的

而且那两种方法的作用也不完全相同
回复

使用道具 举报

发表于 2009-1-10 22:15:39 | 显示全部楼层
有switch就好了
回复

使用道具 举报

发表于 2009-1-10 23:43:32 | 显示全部楼层


应该无差吧

第二种简洁

不过第一种连续判断和第二种性质就不一样了饿
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 点一下

本版积分规则

Archiver|移动端|小黑屋|地精研究院

GMT+8, 2024-7-21 14:30 , Processed in 0.041722 second(s), 18 queries .

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表