Я хочу использовать BigDecimal для представления чисел произвольной точности, таких как цены и суммы в торговом приложении с низкой задержкой, с тысячами заказов и отчетов об исполнении в секунду.
Я не буду делать много математических операций над ними, поэтому речь идет не о производительности BigDecimal как таковой, а о том, как большие объемы объектов BigDecimal будут влиять на производительность приложения.
Моя забота заключается в том, что огромное количество недолговечных объектов BigDecimal будет создавать нагрузку на GC и привести к большим остановкам Stop-The-World в сборщике CMS - и это определенно то, чего я бы хотел избежать.
Не могли бы вы подтвердить мои проблемы и предложить альтернативы использованию BigD? Кроме того, если вы считаете, что мои проблемы ошибочны, пожалуйста, объясните, почему.
Обновление
Спасибо всем, кто ответил. Теперь я убежден, что использование BigDecimal приведет к задержке моего приложения (хотя я все еще планирую его измерить).
В настоящее время мы решили придерживаться "очень не-ООП" (но без достижения точности) - используйте два int
s, один для мантиссы и другой для показателя. Обоснование этого заключается в том, что примитивы помещаются в стек, а не в кучу, и, следовательно, не подлежат сборке мусора.