Java 字符串.valueOf(i)vs"&引用+;我或我+&引用&引用;

Java 字符串.valueOf(i)vs"&引用+;我或我+&引用&引用;,java,string,numbers,integer,numeric,Java,String,Numbers,Integer,Numeric,为了方便起见,我通常使用“”+I。但与我自己的性能相比,我认为String.valueOf(I)会更快。是这样吗?我应该用哪一个 更新:我已经阅读了你的答案,以下是我能告诉你的: -如果代码在递归块中,只有很小的性能差异才会变大。-您没有确切地告诉我这两种情况的主要和基本缺点/优点。我认为您无法看到任何可测量的差异。这似乎是通常所说的微观(过早的?)优化,很少是一个好主意 选择你和同事们认为最容易阅读的方法。我会使用 Integer.toString( i ) 如果i是一个整数,那么它可能会使

为了方便起见,我通常使用
“”+I
。但与我自己的性能相比,我认为
String.valueOf(I)
会更快。是这样吗?我应该用哪一个

更新:我已经阅读了你的答案,以下是我能告诉你的:

-如果代码在递归块中,只有很小的性能差异才会变大。
-您没有确切地告诉我这两种情况的主要和基本缺点/优点。

我认为您无法看到任何可测量的差异。这似乎是通常所说的微观(过早的?)优化,很少是一个好主意

选择你和同事们认为最容易阅读的方法。

我会使用

Integer.toString( i )
如果i是一个整数,那么它可能会使用内部缓存以获得更好的性能


虽然差别很小,但选择阅读效果最好的。然后,在优化任何内容之前,对应用程序进行概要分析

始终首先配置文件(例如,因为您使用Java编写代码)

有很多关于分析和优化的资源。我最近读到的一本好书是这样的

如果性能真的变得关键,考虑切换到

编辑:

嗯,你的问题没有直接的答案。对
String.valueOf(i)
的性能与
i+“
进行微观基准测试的价值很小。真正的答案来自于对应用程序进行基准测试:它本身的复杂性和内存访问模式决定了一切


这些不是我的想法,但我相信它们:,。

你为什么不自己测试一下呢?或调试以查看“+i”实际调用的内容。你会惊讶的;)<代码>字符串。valueOf(i)更好地传达了意图。无论如何,如果瓶颈确实存在,那么您就必须重构代码around@ThomasJungblut我不知道如何测试性能时间。你能告诉我有什么不同吗?
String#valueOf(int)==Integer。如果他将来更改为
long
或其他类型,toString(int)
将是一个不必要的麻烦。没有内部缓存。这只是一个解析。你看到代码了吗?在数百万递归的情况下,微小的差异会变得很大。所以我需要确切地知道。@W.N.-这是错误的。如果每秒执行数百万次,您只需要知道答案。。。您的应用程序必须快速运行。分析将告诉您这个微小的代码片段是否对性能有重大影响。嘿,这是一个惊人的答案!不是直接问我的问题,而是如何解决我的问题!