考虑一个应用
- 从文本文件中读取数千个
String
值。 - 选择(通过正则表达式匹配)那些代表数字的值(从简单的整数到以带尾数的科学记数法书写的非常大的值)。
- 对于表示数字的每个
String
值,实例化一个BigDecimal
对象(总速率为每秒数千个 Bigdecimal 对象)。 - 使用每个实例化的
BigDecimal
对象进行进一步处理。
鉴于上述情况,显然每个 BigDecimal
对象的实例化都会对性能产生影响。
从非空字符串 str
实例化那些 BigDecimal
对象的一种方法是:
BigDecimal number = new BigDecimal(str.toCharArray(), 0, str.length()));
这正是 String constructor of BigDecimal 的内容在 JDK
的 Oracle
实现中展开。
是否有更快的方法从此类字符串中实例化 BigDecimal
对象,或者通过替代方法?
最佳答案
我会用
BigDecimal number = new BigDecimal(str);
哪个更简单,区别不大。
如果您需要性能并且不需要超过 15 位的精度,您可以使用 double
。
你需要性能我会在微优化之前查看整个应用程序的性能。您提到使用正则表达式,这比创建字符串或 BigDecimal 使用更多的 CPU。您可以介绍一下您的应用程序吗?
关于java - 从字符串实例化 BigDecimal 的最快方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13209833/