首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从字符串实例化BigDecimal的最快方法

问从字符串实例化BigDecimal的最快方法
EN

Stack Overflow用户
提问于 2012-11-03 13:57:10
回答 3查看 1.7K关注 0票数 3

考虑一个应用程序

  1. 从文本文件中读取数千个String值。
  2. 选择(通过正则表达式匹配)表示数字的值(从简单整数到用尾数用科学符号编写的非常大的值)。
  3. 对于表示一个数字的每个String值,实例化一个BigDecimal对象(以每秒数千个大小数点对象的总速率)。
  4. 使用每个实例化的BigDecimal对象进行进一步处理。

考虑到上述场景,显然每个BigDecimal对象的实例化都会影响性能。

从非空字符串BigDecimal str实例化这些str对象的一种方法是:

代码语言:javascript
复制
BigDecimal number = new BigDecimal(str.toCharArray(), 0, str.length()));

这正是BigDecimal的字符串构造函数在JDK的Oracle实现中扩展到的。

是否有一种从这样的字符串实例化BigDecimal对象的更快的方法,或者通过另一种方法?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-11-03 14:32:54

我会用

代码语言:javascript
复制
BigDecimal number = new BigDecimal(str);

这更简单,差别也不大重要。

如果您需要性能,并且不需要超过15位数的精度,则可以使用double。

你需要性能,我会在微优化之前看看你的整个应用程序的性能。您提到使用正则表达式,这可能比创建字符串或BigDecimal使用更多的CPU。你能介绍一下你的申请吗?

票数 4
EN

Stack Overflow用户

发布于 2012-11-03 14:54:23

我同意差异不太重要,但是我会使用valueOf,因为未来版本的java很可能会缓存很多常见的数字。

票数 1
EN

Stack Overflow用户

发布于 2012-11-26 20:12:42

如果有很多数字可能是相同的,那么HashMap<String, BigDecimal>‘缓存’的BigDecimal值可能会更快。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13209833

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档