Lint报告StringBuilder会影响性能

Kit*_*fer 10 performance android lint

在我的项目上,我刚做了一个LINT检查,到目前为止我很满意.但我很好奇为什么LINT报告说StringBuilder的使用很慢?

我刚才从Eclipse切换到Android Studio,那些由eclipse生成的toString()方法可以获得更好的调试输出:

@Override
public String toString()
{
    final StringBuilder builder = new StringBuilder();
    builder.append("param1");
    builder.append(param1);
    builder.append(", param2");
    builder.append(param2);
    builder.append("param3");
            ....
    return builder.toString();
}
Run Code Online (Sandbox Code Playgroud)

在Studio中,它报告了'用String替换StringBuilder'.从我的角度来看,StringBuilder总是更快,更友好的GC方法.还是DEX有些聪明,我不知道吗?

我搜索了LINT Checks而没有任何描述

ucs*_*nil 0

简单的答案是,虽然性能绝对没有任何差异,但更容易做到:

String string = "param1" + param1 + ", param 2" + param2 + "param3".... (and so on)
Run Code Online (Sandbox Code Playgroud)

我更喜欢这种方法,因为它更短。在幕后,编译器会将其转换为您刚才提到的代码,并且生成的字节码完全相同。

如果您要在循环中构建字符串,那么 StringBuilder 绝对是最佳选择。

  • 在我看来,LINT 仍然需要解决一些功能。它分析代码的方式仍然非常通用,这就是为什么它们允许您自定义它以排除某些检查。一般分析可能会假设使用 String 进行连接可能会比使用 StringBuilder 进行附加产生更小的代码。 (2认同)