Java 写一起和分开写有没有效率快慢之分

javaInteger fileId = pin.getFileId();
File file = fileService.get(fileId);
pin.setFile(file);
javapin.setFile(fileService.get(pin.getFileId()));

这两个有效率快慢之分,感觉第2种要快一些

阅读 6.8k
11 个回答

最大的区别是出异常,log里只记了一个出错行号的时候。

对现代编译器来说,这两种写法应该没有区别吧
个人建议第一种写法,一是因为易于阅读,二是调试的时候方便看中间步骤的结果

两种写法的效率可以忽略不计。
看了楼上这么多支持第一种写法的意见,其实我是更倾向第二种写法的。
1.首先要看变量fileId和file是否在其他地方有用到,如果只用在setFile方法里面,那可以取消这些中间变量的定义(这样可以少费点脑筋想变量名,取变量名经常是编程一大难题-_-)。
2.getFileId这个方法从方法名就可以知道获得的是一个fileId,所以再创建个变量fileId没什么必要。
3.通过setFile方法可以知道传入的参数是一个File对象,所以也没有必要再创建个变量file。
4.第二种写法看起来更加简洁。

很多人会觉得第二种写法不好调试,其实在IDEA中及时不提取变量也可以很方便地查看中间变量的值:

IDEA调试

完全不用考虑效率,可以认为是一样的,主要是看你是否后面还会用到这些方法的返回值。个人感觉第一个结构比较清晰,推荐使用。还有,有考虑因为这个性能问题的时间,还不如去在其他方面去提升。

将两种操作各运行1000000次,然后比较时间即可。结果是第一种似乎总是比第二中慢,但是,不超过50ms,因此,没有较大的影响,相比较而言,第一种可读性更强。

我认为在这种较小的语句级的效率影响并不明显,应该把更多的经历放在算法和架构上,这个级别上的效率会有数倍的差距。

写代码不只是为了效率,代码要最求更加优雅,阅读起来才不特么费劲。

刚看了《黑客与画家》,“程序写出来是给人看的, 碰巧机器也能运行”

按说法,书写应该是第一种,也就是可读性,可维护性为重,第二种则是编译器要干的事

都用java了这点点效率影响不大``!

第一种会产生中间变量,会占用一点点点多余的内存空间,可以忽略不计。
比起可读性,这点小牺牲是值得的。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题