首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >效率差异

效率差异
EN

Software Engineering用户
提问于 2015-10-29 13:27:18
回答 3查看 209关注 0票数 0

我正在做一个编译器,我使用System.out.println();打印程序集;

代码变得越来越大,理解起来也更加复杂。我想知道这与我是否应该这样做的效率有什么不同:

代码语言:javascript
复制
System.out.println("iload");

或者:

代码语言:javascript
复制
private void printAssemblyCode(String code) {
    System.out.println(code);
}    
printAssemblyCode("iload");

它只是为了更易读。这么做值得还是不值得?

EN

回答 3

Software Engineering用户

回答已采纳

发布于 2015-10-29 14:17:56

由于在现代Java编译器中进行了优化,效率并没有太大的不同,但是它并没有获得很大的灵活性。它让你做的唯一一件事就是关闭一个位置而不是多个地方的打印。

将日志框架委托给您会更好。Java有内置测井,还有其他框架,如Log4j

使用日志框架可以获得当前代码无法实现的几项功能:

  • 您可以登录到任意流:标准输出、标准错误、文件、套接字等等。
  • 你还有额外的诊断水平。而不是开或关,你可以有错误,警告,信息,等等,你可以控制哪个诊断级别被输出。
  • 日志消息可以包括其他信息,如发生日志记录的类和行号(如果您沿着Throwable传递),以及日期和时间。
  • 所有的配置都是通过配置完成的,而不是代码。您可以编辑XML或属性文件,而不是注释掉一行代码和重新构建,这样就完成了。

一旦您掌握了使用日志框架的诀窍,它就像使用System.out.println()一样简单,但是如果您需要它,它还有更多的功能。

最后,日志框架通常需要少量的初始化,但在调用其功能时很少或根本不会给正在运行的流程增加明显的开销。

票数 0
EN

Software Engineering用户

发布于 2015-10-29 13:50:28

将代码放入方法中有一个不同的优点:如果决定不将代码打印到控制台,则只需更改一行代码即可。

在整个项目中硬编码打印到控制台并不是一个好主意。

一旦您有了一个工作版本,并希望继续使用它,那么您就必须完成并更改如何将程序集传递给调用代码以供进一步处理。您可以做的一件事是将打印更改为调用可插入的接口,该接口收集操作码(而不是字符串),并实现将它们打印到控制台。

票数 3
EN

Software Engineering用户

发布于 2015-10-29 13:31:10

调用多一个方法输出某物的开销太小,因为I/O比计算慢得多。

问题仍然是使用自定义打印方法而不是直接使用println的可读性有多大。我会认为它是小的,但它可能是值得的,因为增加的成本是非常接近0。

票数 1
EN
页面原文内容由Software Engineering提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://softwareengineering.stackexchange.com/questions/301200

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档