如何处理 Java BigDecimal 的性能?
2022-08-31 15:38:59
我为生活编写货币交易应用程序,所以我必须使用货币值(很遗憾Java仍然没有十进制浮点数类型,也没有任何东西支持任意精确的货币计算)。“使用BigDecimal!”——你可能会说。我愿意。但是现在我有一些代码,其中性能是一个问题,BigDecimal比基元慢1000倍(!)以上。double
计算非常简单:系统所做的是计算许多次(其中,并且是定点值)。但是,问题在于 这一点 。我不能使用不动点算术,因为没有不动点。而且不仅丑陋,而且缓慢而缓慢。a = (1/b) * c
a
b
c
(1/b)
BigDecimal result = a.multiply(BigDecimal.ONE.divide(b).multiply(c)
我可以使用什么来替换 BigDecimal?我需要至少将性能提高 10 倍。我发现了其他优秀的JScience库,它具有任意精度的算术,但它甚至比BigDecimal慢。
有什么建议吗?