我寫了很多東西來登錄突發,並優化數據路徑。我使用StringBuilder
構建日誌文本。什麼是最有效的初始容量,內存管理是明智的,所以無論JVM如何,它都能很好地工作。目標是幾乎總是避免重新分配,初始容量應該在80-100左右。但是我也想浪費盡可能少的字節,因爲StringBuilder實例可能會在緩衝區中出現並浪費字節。StringBuilder最有效的初始容量大小?
我意識到這取決於JVM,但應該有一些價值,這將浪費最少的字節,無論JVM,「最不共同的分母」。我目前使用128-16
,其中128是一個不錯的整數,減法用於分配開銷。此外,這可能被認爲是「過早優化」的情況,但是由於我接下來的答案是「經驗法則」數字,因爲知道它在未來也會有用。
我並不期待「我最好的猜測」答案(我自己的答案已經是這樣),我希望有人已經研究過這個問題,可以分享一個基於知識的答案。
對這個問題的回答取決於很多事情,例如,在「StringBuilder」中存儲文本的時間有多長等等。要找出的唯一方法是使用內存和/或CPU分析器進行測量。除非創建數十萬個'StringBuilder'對象,否則沒有理由擔心幾個字節。 – Jesper
到目前爲止最大的開銷是IO的成本。除非您不打算將這些數據寫入IO,否則我不會擔心。 –