我想使用BigDecimal在低延遲交易應用程序中表示任意精確數字,例如價格和金額,每秒有數千個訂單和執行報告。如何使用BigDecimal會影響應用程序性能?
我不會對它們做很多數學運算,所以問題不在於BigDecimal本身的性能,而在於BigDecimal對象的大量性能會如何影響應用程序的性能。
我擔心的是,大量短命的BigDecimal對象會給GC帶來壓力,並導致CMS收集器中更大的Stop-The-World暫停 - 這絕對是我想要避免的。
您能否確認我的疑慮並提出使用BigD的替代方案?另外,如果您認爲我的擔憂是錯誤的 - 請解釋原因。
更新:
感謝所有誰回答。我現在確信使用BigDecimal會傷害我的應用程序的延遲(儘管我仍然計劃對它進行測量)。
目前我們決定堅持使用「非OOP」解決方案(但沒有準確性) - 使用兩個int
s,一個用於尾數,另一個用於指數。這背後的原理是,基元被放置在棧上,而不是堆,因此不會被垃圾收集。
如果BidD不適合我,那麼是什麼?我不使用雙打(因爲它帶來了浮點數的許多新問題 - 我使用的數字自然是小數)。 – vtrubnikov 2009-09-04 09:43:07
+1表示競爭表現的關鍵點。正如在關於老虎和跑步鞋的笑話中,絕對數字很少有什麼重要的,比重要的還要好。 – soru 2009-09-04 09:53:18
@ valery_la99 - 我已添加到我的答案 – 2009-09-04 10:09:21