gpt4 book ai didi

java - StringReader 和 for 循环之间的速度比较。 (将字符串转换为jaxb对象时)

转载 作者:行者123 更新时间:2023-12-02 05:35:27 25 4
gpt4 key购买 nike

我寻找了 StringReader 和简单的 for 循环 之间的速度比较,但无法得出任何有用的结果。我感兴趣的是使用 jaxb 将字符串转换为 jaxb 对象。我找到的答案 ( Use JAXB to create Object from XML String ) 表明我需要将我的 string 包装在 StringReader 中,这是有道理的,但是需要一些工作才能将其正确组合在一起。 (我正在使用自定义类来编码和解码对象,我必须检查、修改、提交这些对象,然后重新导入到我的项目中。这是一个很大的时间消耗。)我发现我可以做同样的事情只需将我的字符串转换为 byte[] ,然后使用现有方法获取我需要的 object 即可,如下所示:

String responseAsString = " <?xml ver....";
byte[] myResponse = new byte[responseAsString.length()];
for(int i = 0; i < responseAsString.length(); i++){
myResponse[i]=(byte)responseAsString.charAt(i);
}

所以我的问题是这样的:如果我的 responseAsString 长度约为 200,000 个字符,那么此方法是否会比使用 StringReader 获取我的 jaxb 对象慢得多

最佳答案

虽然已经有一年了,但那些通过 Google 搜索 StringReader 性能的人应该知道,在逐个字符读取时,它的性能非常糟糕,就像解析 XML 或 Json 时的情况一样。

对 read() 的每次调用都包含一个同步块(synchronized block),这在大多数情况下是不必要的,而且当您真正想压缩性能时,它的成本相当高。可以编写您自己的替代 StringReader,其功能相同,但只需几行代码即可实现同步,这可能会带来相当大的胜利。

关于java - StringReader 和 for 循环之间的速度比较。 (将字符串转换为jaxb对象时),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25001292/

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