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

标签 java performance instantiation bigdecimal

考虑一个应用

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

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

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

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

这正是 String constructor of BigDecimal 的内容在 JDKOracle 实现中展开。

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

最佳答案

我会用

BigDecimal number = new BigDecimal(str);

哪个更简单,区别不大。

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

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

关于java - 从字符串实例化 BigDecimal 的最快方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13209833/

相关文章:

java - 有没有办法使用Java的Override注释来指定被覆盖的接口(interface)/类?

java - 检测指纹扫描仪触摸或移动

r - 具有共享数据的多个 ggplot2 图表

performance - ARM64 有性能优势吗

performance - 如何更快地解码 JPEG 文件?

java - 快速 Java 问题 : Instantiating a given class only from another?

java - 为什么这个程序的空间复杂度是O(h)?其中 h 是 btree 的高度

java - 使用 Java 每当收到邮件时触发一个操作

php - 实例化时的类成员访问

C++ 对象实例化