我通常使用"" + i
方便。但比较自己的表现,我认为String.valueOf(i)
会更快。这样对吗?我应该使用哪一个?将String.valueOf(ⅰ)与 “” + I或I + “”
更新:我读过你的答案,这里是我可以告诉:
- 只有很小的性能差异,如果将这些代码是一个递归块内变大。
- 你没有确切地告诉我这两种情况的主要和基本缺点/优点。
我通常使用"" + i
方便。但比较自己的表现,我认为String.valueOf(i)
会更快。这样对吗?我应该使用哪一个?将String.valueOf(ⅰ)与 “” + I或I + “”
更新:我读过你的答案,这里是我可以告诉:
- 只有很小的性能差异,如果将这些代码是一个递归块内变大。
- 你没有确切地告诉我这两种情况的主要和基本缺点/优点。
选择最佳的读数。然后,在优化任何内容之前对你的应用进行配置
始终轮廓第一(例如与VisualVM因为你在Java编码)。
分析和优化有许多资源。我遇到的最新的好读是Step by Step Optimisation by Tony Albrecht。
如果表现确实变得非常重要,考虑切换到StringBuilder。
编辑:
那么有没有直接回答你的问题恕我直言。微基准String.valueOf(i)
对i + ""
的性能没有多大价值。真正的答案来自对应用程序进行基准测试:它自己的复杂性和内存访问模式决定了这一切。
这些都不是我的想法,但我买他们:stop programming like it's 1975,big O notation needs an update。
嘿,这是一个了不起的答案!不是直接问我的问题,但它是如何解决我的问题! –
我不认为你将能够看到任何可测量的差异。这似乎是通常所说的微(过早)优化,并且很少是一个好主意。
选择你和你的同事找到最简单的阅读方法。
在数百万递归的情况下,小的差异将变大。所以我需要确切地知道。 –
@ W.N。 - 这是不正确的。你只需要知道答案**如果**这将被执行数百万次**每秒** **和** **你的应用程序**必须**运行速度很快。性能分析将为您提供一个指示,看看这个小代码片段是否会对性能产生重大影响。 –
我会用
Integer.toString(i)
,如果我是有可能为它使用一个内部缓存以提高性能的整数。
虽然差异很小
'String#valueOf(int)== Integer.toString(int)' –
但是如果他在未来会变成'long'或其他类型,那将是一个不必要的麻烦。 – aioobe
没有内部缓存。它只是一个解析。你看到了代码吗? –
你为什么不测试自己?或者调试以查看实际调用的“+”。你会惊讶;) –
'String.valueOf(i)'更好地传达意图imho。无论如何,如果瓶颈确实存在,那么你真的必须对代码进行重构 –
@Thomas Jungblut我不知道如何测试性能时间。你能给我什么不同吗? –