gpt4 book ai didi

java - 从字符列表中创建字符串然后清除它的最有效方法

转载 作者:行者123 更新时间:2023-12-02 02:51:55 24 4
gpt4 key购买 nike

我正在尝试创建一种类似 JSON 的格式来从文件加载组件,在编写解析器时我遇到了一个有趣的性能问题。

解析器逐字符读取文件,因此我有一个 LinkedList 作为缓冲区。到达键 (:) 或值 (,) 的末尾后,必须清空缓冲区并构造一个字符串。

我的问题是最有效的方法是什么。

我最好的两个选择是:

for (int i = 0; i < buff.size(); i++)
value += buff.removeFirst().toString();

value = new String((char[]) buff.toArray(new char[buff.size()]));

最佳答案

您应该编写一个基准测试,而不是猜测这一点。看看How do I write a correct micro-benchmark in Java了解如何使用 JMH 编写基准测试.

当您使用 + 运算符连接 1 个字母 String 时,您的 for 循环效率会很低。这会导致创建并立即丢弃中间 String 对象。您应该使用 StringBuilder如果您打算在循环中连接。

第二个选项应使用零长度数组,如 Arrays of Wisdom of the Ancients深入探讨 JVM 内部细节的文章:

value = new String((char[]) buff.toArray(new char[0]));

关于java - 从字符列表中创建字符串然后清除它的最有效方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57102371/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com