2011-08-20 47 views
3

我通常使用"" + i方便。但比较自己的表现,我认为String.valueOf(i)会更快。这样对吗?我应该使用哪一个?将String.valueOf(ⅰ)与 “” + I或I + “”

更新:我读过你的答案,这里是我可以告诉:
- 只有很小的性能差异,如果将这些代码是一个递归块内变大。
- 你没有确切地告诉我这两种情况的主要和基本缺点/优点。

+0

你为什么不测试自己?或者调试以查看实际调用的“+”。你会惊讶;) –

+0

'String.valueOf(i)'更好地传达意图imho。无论如何,如果瓶颈确实存在,那么你真的必须对代码进行重构 –

+0

@Thomas Jungblut我不知道如何测试性能时间。你能给我什么不同吗? –

回答

3

选择最佳的读数。然后,在优化任何内容之前对你的应用进行配置

始终轮廓第一(例如与VisualVM因为你在Java编码)。

分析和优化有许多资源。我遇到的最新的好读是Step by Step Optimisation by Tony Albrecht

如果表现确实变得非常重要,考虑切换到StringBuilder

编辑:

那么有没有直接回答你的问题恕我直言。微基准String.valueOf(i)i + ""的性能没有多大价值。真正的答案来自对应用程序进行基准测试:它自己的复杂性和内存访问模式决定了这一切。

这些都不是我的想法,但我买他们:stop programming like it's 1975big O notation needs an update

+0

嘿,这是一个了不起的答案!不是直接问我的问题,但它是如何解决我的问题! –

4

我不认为你将能够看到任何可测量的差异。这似乎是通常所说的微(过早)优化,并且很少是一个好主意。

选择你和你的同事找到最简单的阅读方法。

+0

在数百万递归的情况下,小的差异将变大。所以我需要确切地知道。 –

+3

@ W.N。 - 这是不正确的。你只需要知道答案**如果**这将被执行数百万次**每秒** **和** **你的应用程序**必须**运行速度很快。性能分析将为您提供一个指示,看看这个小代码片段是否会对性能产生重大影响。 –

1

我会用

Integer.toString(i) 

,如果我是有可能为它使用一个内部缓存以提高性能的整数。

虽然差异很小

+1

'String#valueOf(int)== Integer.toString(int)' –

+1

但是如果他在未来会变成'long'或其他类型,那将是一个不必要的麻烦。 – aioobe

+0

没有内部缓存。它只是一个解析。你看到了代码吗? –

相关问题