String.valueOf(i) 与 "" +我还是我 + ”“
为了方便起见,我通常使用 "" + i
。但我自己比较一下性能,我认为 String.valueOf(i)
会更快。对吗?我应该使用哪一个?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
为了方便起见,我通常使用 "" + i
。但我自己比较一下性能,我认为 String.valueOf(i)
会更快。对吗?我应该使用哪一个?
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
接受
或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
发布评论
评论(3)
我认为您不会看到任何可测量的差异。这似乎就是通常所说的微观(过早?)优化,而且很少是一个好主意。
选择您和您的同事认为最容易阅读的方法。
I don't think you will be able to see any measurable difference. This seems to be what is usually referred to as micro (premature?) optimizations and are seldom a good idea.
Choose the method you and your fellow colleagues find easiest to read.
选择读起来最好的。然后,在优化任何内容之前分析您的应用程序。
始终首先进行分析(例如使用 VisualVM,因为您使用 Java 进行编码)。
有很多关于分析和优化的资源。我最新读到的好书是托尼·阿尔布雷希特 (Tony Albrecht) 的逐步优化。
如果性能确实变得至关重要,请考虑切换到 StringBuilder 。
编辑:
嗯,恕我直言,你的问题没有直接的答案。针对
i + ""
对String.valueOf(i)
的性能进行微基准测试没有什么价值。真正的答案来自于对应用程序进行基准测试:其自身的复杂性和内存访问模式决定了这一切。这些不是我的想法,但我相信它们:停止像 1975 年那样编程 , 大 O 表示法需要一个更新。
Choose what reads best. Then, profile your application before optimizing anything.
Always profile first (for instance with VisualVM since you're coding in Java).
There are many resources on profiling and optimization. The latest good read I came across is this Step by Step Optimisation by Tony Albrecht.
And if performance really becomes critical, consider switching to StringBuilder.
EDIT:
Well there is no straight answer to your question imho. Micro-benchmarking the performance of
String.valueOf(i)
againsti + ""
has little value. The real answer comes from benchmarking your application: its very own complexity and memory access pattern decides it all.Those are not my ideas but I'm buying them: stop programming like it's 1975, big O notation needs an update.
如果 i 是整数,我会使用它
,因为它可能使用内部缓存来获得更好的性能。
不过差异会很小
I would use
if i is an integer as it might be possible for it to use an internal cache for better performance.
The difference would be small though