繁体   English   中英

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

[英]Fastest way to instantiate BigDecimal from string

考虑一个应用程序

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

鉴于上述情况,显然每个BigDecimal对象的实例化都会对性能产生影响。

从非null String str实例化那些BigDecimal对象的一种方法是:

BigDecimal number = new BigDecimal(str.toCharArray(), 0, str.length()));

这正是BigDecimalString构造函数JDKOracle实现中扩展的内容。

是否有更快的方法从这些字符串实例化BigDecimal对象,或通过替代方法?

我会用

BigDecimal number = new BigDecimal(str);

这更简单,差异不太重要。

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

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

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

如果有很多可能相同的数字,那么BigDecimal值的HashMap<String, BigDecimal> 'cache'可能会更快。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM