关于一段Java代码执行效率的疑惑

bickjat 2014-11-17 04:50:43
A:
a(String[] args){
if(args != null){
for(String arg : args){
system.out.println(arg);
}
}
}


B:
b(String[] args){
if(args == null){
return;
}
for(String arg : args){
system.out.println(arg);
}
}

A与B执行效率差别大么?
-----------------------------------------------------------
PS:今天经理跑来跟我说你这程序不能像A这么写,要写成B这样的,这效率到底差别能有大呢?
...全文
288 13 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
冥王之锤 2014-11-19
  • 打赏
  • 举报
回复
1.第二种快,!=运算一般实现是在==运算上取反。 2.条件判断一般优先用==,容易理解,相比!=。 3.异常条件一般优先处理,代码条理清晰。
猿人林克 2014-11-19
  • 打赏
  • 举报
回复
引用 8 楼 fengzhw 的回复:
[quote=引用 6 楼 ooppookid 的回复:] 首先,对于效率来说都一样 第二种符合处理的一般习惯,一般都是先进行数据校验或非法操作的处理,然后在进行业务处理,这种东西你做过一个全程项目很容易理解,到后来你会把类似第一种的写法全部改写成第二种,增加可读性和可扩展性。相信我
实际上第一种的效率要略高一些。。。。。。 但是从维护的角度,4楼举例,6楼说理,说服力应该足够强了。[/quote] 为何第一种效率高?
fengzhw 2014-11-19
  • 打赏
  • 举报
回复
引用 6 楼 ooppookid 的回复:
首先,对于效率来说都一样 第二种符合处理的一般习惯,一般都是先进行数据校验或非法操作的处理,然后在进行业务处理,这种东西你做过一个全程项目很容易理解,到后来你会把类似第一种的写法全部改写成第二种,增加可读性和可扩展性。相信我
实际上第一种的效率要略高一些。。。。。。 但是从维护的角度,4楼举例,6楼说理,说服力应该足够强了。
fireofsun 2014-11-19
  • 打赏
  • 举报
回复
感觉这跟效率没什么关系吧,就是可读性的问题
日知己所无 2014-11-19
  • 打赏
  • 举报
回复
《代码大全》里明确的解释过:B更容易阅读和维护。
zapdos 2014-11-19
  • 打赏
  • 举报
回复
1、我习惯B 2、这种代码跟效率没有太大的关系
dgqjava 2014-11-19
  • 打赏
  • 举报
回复
和效率无关, 但你们经理说的是对的, 如四楼所说, 判断条件过多就会出现if嵌套深度过大, 一些编码规范严格的项目中这样的代码是不合格的
猿人林克 2014-11-18
  • 打赏
  • 举报
回复
首先,对于效率来说都一样 第二种符合处理的一般习惯,一般都是先进行数据校验或非法操作的处理,然后在进行业务处理,这种东西你做过一个全程项目很容易理解,到后来你会把类似第一种的写法全部改写成第二种,增加可读性和可扩展性。相信我
scott_129 2014-11-17
  • 打赏
  • 举报
回复
楼上这位说得好啊,学习了。看来我们还没有达到这个水平啊。
yktd26 2014-11-17
  • 打赏
  • 举报
回复
这不光是效率不效率的问题,是个逻辑问题,A的写法把这个test当作一个运行条件,B是把他的!当作异常;先处理 B是明显好于A的,你这个例子可能还显示不太出来,但如果像这种test有很多时,照A的写法很容易得到类似于

if (!...) {
  if (!...) {
    if (!...) {
      if (!...) {
        ...
      }
    }
  }
}
但用B的写法却是

if(...) {
  throw exception
}
if(...) {
  throw exception
}
if(...) {
  throw exception
}
if(...) {
  throw exception
}
...
先处理异常情况,再做主线逻辑处理。无论在代码可读性还是逻辑上都要更好。即便真的要讨论效率问题,A压栈操作要比B多很多,越复杂的情况越能体现出来.
普凡 2014-11-17
  • 打赏
  • 举报
回复
几乎没有差别,而且你的方式A 可读性更强。
wyc_ 2014-11-17
  • 打赏
  • 举报
回复
我觉得效率上也没什么太大区别,编程风格问题吧
sui2121 2014-11-17
  • 打赏
  • 举报
回复
我觉的没有啥区别 你们经理脑袋有泡 不知道其他人有没有不同看法

62,634

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧