Android Lint报告StringBuilder影响性能

Android Lint报告StringBuilder影响性能,android,performance,lint,Android,Performance,Lint,在我的项目中,我只是做了一个线头检查,到目前为止我很满意。但是我很好奇为什么LINT报告说StringBuilder的使用很慢 我不久前从Eclipse切换到Android Studio,这些toString()方法由Eclipse生成,以获得更好的调试输出: @Override public String toString() { final StringBuilder builder = new StringBuilder(); builder.append("param1"

在我的项目中,我只是做了一个线头检查,到目前为止我很满意。但是我很好奇为什么LINT报告说StringBuilder的使用很慢

我不久前从Eclipse切换到Android Studio,这些toString()方法由Eclipse生成,以获得更好的调试输出:

@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();
}
在Studio中,它报告了“用字符串替换StringBuilder”。在我看来,StringBuilder总是更快、更友好的方法。或者德克斯有什么聪明的东西我不知道


我在搜索时没有对此进行任何描述。简单的答案是,虽然性能上绝对没有差异,但更容易做到:

String string = "param1" + param1 + ", param 2" + param2 + "param3".... (and so on)
我更喜欢这种方法,因为它比较短。在幕后,编译器会将其转换为刚才提到的代码,生成的字节码完全相同


如果您是在循环中构建字符串,那么StringBuilder肯定是一个不错的选择。

值得指出的是,GC足够可靠,这意味着区分两者可能是无用的。如果您要在高分辨率图像或其他东西之间交换,GC可能会成为一个更重要的因素,但是对于创建字符串,您不应该担心GC或字符串创建的速度。与应用程序中的其他功能相比,它是微不足道的。还有一个问题是,为什么LINT说它不好?在我看来,LINT仍然需要解决一些功能。它在分析代码的方式上仍然非常通用,这就是为什么它们允许您自定义代码以排除某些检查。一般分析可能会假设,使用字符串进行连接可能会产生比使用StringBuilder进行附加更小的代码。即使在普通JVM上,这也是错误的,因为字符串使用StringBuilder进行连接会产生相同大小的字节码