考虑一个应用程序
String值。String值,实例化一个BigDecimal对象(以每秒数千个大小数点对象的总速率)。BigDecimal对象进行进一步处理。考虑到上述场景,显然每个BigDecimal对象的实例化都会影响性能。
从非空字符串BigDecimal str实例化这些str对象的一种方法是:
BigDecimal number = new BigDecimal(str.toCharArray(), 0, str.length()));这正是BigDecimal的字符串构造函数在JDK的Oracle实现中扩展到的。
是否有一种从这样的字符串实例化BigDecimal对象的更快的方法,或者通过另一种方法?
发布于 2012-11-03 14:32:54
我会用
BigDecimal number = new BigDecimal(str);这更简单,差别也不大重要。
如果您需要性能,并且不需要超过15位数的精度,则可以使用double。
你需要性能,我会在微优化之前看看你的整个应用程序的性能。您提到使用正则表达式,这可能比创建字符串或BigDecimal使用更多的CPU。你能介绍一下你的申请吗?
发布于 2012-11-03 14:54:23
我同意差异不太重要,但是我会使用valueOf,因为未来版本的java很可能会缓存很多常见的数字。
发布于 2012-11-26 20:12:42
如果有很多数字可能是相同的,那么HashMap<String, BigDecimal>‘缓存’的BigDecimal值可能会更快。
https://stackoverflow.com/questions/13209833
复制相似问题