我正在做一个编译器,我使用System.out.println();打印程序集;
代码变得越来越大,理解起来也更加复杂。我想知道这与我是否应该这样做的效率有什么不同:
System.out.println("iload");或者:
private void printAssemblyCode(String code) {
System.out.println(code);
}
printAssemblyCode("iload");它只是为了更易读。这么做值得还是不值得?
发布于 2015-10-29 14:17:56
由于在现代Java编译器中进行了优化,效率并没有太大的不同,但是它并没有获得很大的灵活性。它让你做的唯一一件事就是关闭一个位置而不是多个地方的打印。
将日志框架委托给您会更好。Java有内置测井,还有其他框架,如Log4j。
使用日志框架可以获得当前代码无法实现的几项功能:
Throwable传递),以及日期和时间。一旦您掌握了使用日志框架的诀窍,它就像使用System.out.println()一样简单,但是如果您需要它,它还有更多的功能。
最后,日志框架通常需要少量的初始化,但在调用其功能时很少或根本不会给正在运行的流程增加明显的开销。
发布于 2015-10-29 13:50:28
将代码放入方法中有一个不同的优点:如果决定不将代码打印到控制台,则只需更改一行代码即可。
在整个项目中硬编码打印到控制台并不是一个好主意。
一旦您有了一个工作版本,并希望继续使用它,那么您就必须完成并更改如何将程序集传递给调用代码以供进一步处理。您可以做的一件事是将打印更改为调用可插入的接口,该接口收集操作码(而不是字符串),并实现将它们打印到控制台。
发布于 2015-10-29 13:31:10
调用多一个方法输出某物的开销太小,因为I/O比计算慢得多。
问题仍然是使用自定义打印方法而不是直接使用println的可读性有多大。我会认为它是小的,但它可能是值得的,因为增加的成本是非常接近0。
https://softwareengineering.stackexchange.com/questions/301200
复制相似问题