BigDecimal を使用して、価格や金額などの任意の精度の数値を、毎秒数千の注文と約定レポートを持つ低レイテンシーの取引アプリケーションで表現したいと考えています。
それらに対して多くの数学演算を行うつもりはないので、問題は BigDecimal 自体のパフォーマンスではなく、BigDecimal オブジェクトのボリュームがアプリケーションのパフォーマンスにどの程度影響するかです。
私の懸念は、大量の短期間の BigDecimal オブジェクトが GC に負担をかけ、CMS コレクターで Stop-The-World の一時停止が大きくなるということです。これは間違いなく避けたいことです。
私の懸念を確認し、BigD を使用する代わりの方法を提案していただけますか? また、私の懸念が間違っていると思われる場合は、その理由を説明してください。
更新:
答えてくれてありがとう。BigDecimal を使用すると、アプリケーションのレイテンシーが損なわれることがわかりました (まだ測定する予定ではありますが)。
当分の間、「非常に非 OOP」のソリューションを使用することにしました (ただし、精度への影響はありません) - 2 つint
の を使用します。1 つは仮数用で、もう 1 つは指数用です。この背後にある理論的根拠は、プリミティブがヒープではなくスタックに配置されるため、ガベージ コレクションの対象にならないことです。