我为生活编写货币交易应用程序,所以我必须处理货币价值(遗憾的是,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慢.
有什么建议?
我在Eclipse中有一个Java项目,在我的src/test目录中有JUnit测试.我还使用Caliper微基准测试为我的测试添加了一个类,我希望能够在Eclipse中运行这些测试.
由于Caliper代码是测试代码,我在test范围内添加了Caliper作为Maven中的依赖项.这使得它在运行JUnit测试时显示在类路径中,但我看不到在类路径中运行具有测试依赖性的任意类的方法.我尝试做的是为Java应用程序添加一个新的运行配置,认为我可以CaliperMain使用正确的类作为参数启动,但Caliper jar不在类路径上,我看不到如何添加它.
我不想将我的基准代码和依赖项移动到main作用域中,因为它是测试代码!将它移到一个完全独立的项目中似乎非常严重.