性能提升:toString()

Diy*_*yko 4 java performance tostring

我们正在开发相当大的服务器应用.每个操作都由日志跟踪.调用toString方法的日志很多.不幸的是,我们需要其中大部分,另一方面我们无法追踪生产中发生的事情.尝试改进toString方法是否有意义?例如,将toString的结果放在内存中,并在某些字段更新时更新.

example of my toString
public classs InMessage{
//declared 20+ fields
     @Override
      public String toString() {
       StringBuilder builder = new StringBuilder(this.getClass().getSimpleName());
       builder.append(": [");
       builder.append(super.toString());
       builder.append("; updateTime: ");
       builder.append(updateTime);
       //forexample 20 fields here
       builder.append(";]");
       return builder.toString();
     }}
then we process InMessage in some way and log each action
     log.debug("We received inMessage: {}", inMessage);
Run Code Online (Sandbox Code Playgroud)

在讨论之后,我们决定减少可能的日志数量,仅此而已.

Bri*_*ian 8

除非您正在积极地遇到性能或内存问题,否则不要担心.有用的日志可以极大地帮助产品诊断,你需要权衡那些可能永远不会发生的假设性能问题.

(不是说你肯定会在这里没有问题,只是不要为那些不是真正问题的东西进行优化......)

编辑:相信你是否记录"太多"; 如果单个UI或服务操作生成20页的附带/调试级别信息,即使在INFO级别日志记录中,您可能希望优化内容以使其真正有用

  • "过早优化"是一个众所周知的术语,您可能会发现它很有趣.这并不是普遍接受但有趣的阅读!链接:http://en.wikipedia.org/wiki/Program_optimization#When_to_optimize http://ubiquity.acm.org/article.cfm?id = 1513451 (2认同)