考虑一个
的应用程序String
值。String
值,实例化一个BigDecimal
对象(每秒数千个Bigdecimal对象的总速率)。BigDecimal
对象进行进一步处理。鉴于上述情况,显然每个BigDecimal
对象的实例化都会对性能产生影响。
从非空字符串BigDecimal
实例化那些str
对象的一种方法是:
BigDecimal number = new BigDecimal(str.toCharArray(), 0, str.length()));
这正是Oracle
在JDK
BigDecimal
实施中扩展到的内容。
是否有更快的方式从这些字符串中实例化{{1}}个对象,或通过其他方法?
答案 0 :(得分:3)
我会用
BigDecimal number = new BigDecimal(str);
这更简单,差异不太重要。
如果您需要提高性能且准确度不超过15位,则可以使用double
代替。
你需要表现我会在微观优化之前看一下整个应用程序的性能。您提到使用正则表达式,这可以使用比创建字符串或BigDecimal更多的CPU。你能描述你的申请吗?
答案 1 :(得分:1)
我同意这种区别不太重要,但我会使用valueOf,因为未来版本的java可能会缓存很多常用数字。
答案 2 :(得分:0)
如果有很多数字可能相同,那么HashMap<String, BigDecimal>
BigDecimal
值的{{1}}'缓存'可能会更快。