[英]Most efficient way to create a string out of a list of characters then clear it
我試圖創建一種類似JSON的格式來從文件中加載組件,並且在編寫解析器時遇到了一個有趣的性能問題。
解析器逐個字符地讀取文件,因此我有一個LinkedList作為緩沖區。 到達鍵( :
或值( ,
)的末尾后,必須清空緩沖區,並使用該緩沖區構造一個字符串。
我的問題是最有效的方法是什么。
我的兩個最佳選擇是:
for (int i = 0; i < buff.size(); i++)
value += buff.removeFirst().toString();
和
value = new String((char[]) buff.toArray(new char[buff.size()]));
不用猜測,您應該編寫一個基准。 看一看如何在Java中編寫正確的微基准,以了解如何使用JMH編寫基准。
當您使用+
運算符連接1個字母的String
for
循環效率不高。 這將導致創建並立即丟棄中間的String
對象。 如果計划在循環中進行串聯,則應使用StringBuilder
。
第二個選項應該根據古代智慧數組中的文章使用零長度數組,該文章深入探討了JVM的內部細節:
value = new String((char[]) buff.toArray(new char[0]));
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.