cbz*_*cbz 9 java performance multithreading jaxb marshalling
我已经使用JAXB Marshaller以及我自己的marshaller将纯java bean对象编组为XML.据观察,它们都需要几乎相同的时间进行编组.性能是不可接受的,需要改进.有哪些方法可以提高编组人员的表现?像线程一样?
Lio*_*orH 14
确保只创建一次JaxB上下文实例,创建上下文需要一些时间,因为它使用反射来解析对象的注释.
请注意,JAXBContext是线程安全的,但是marshallers\unmarshallers不是,因此您仍然需要为每个线程创建编组器.但是我发现当你已经拥有jaxb上下文时创建marshallers非常快.
再提出其他好的建议,我建议您使用JAXB的方式有问题 - 只要表现良好,它通常表现良好:
如果JAXB仍然比手动编写的变体慢50%,我会分析它以查看还有什么问题.如果使用得当,它不应该工作缓慢 - 我已经连续测量它,并且发现它如此之快以至于手写转换器通常不值得花时间和精力.
Jibx是一个很好的包装,所以我没有反对尝试它.它可能仍然比JAXB快一点; 当两者都正确使用时,不是5倍或10倍.
借调JibX的使用.和questzen一样,我发现JibX在性能测试中比JAXB快9倍.
此外,确保在使用JibX时在类路径上有woodstox.我发现woodstox的Stax Implementation比Stax的Java6实现快大约1050%.
| 归档时间: |
|
| 查看次数: |
19524 次 |
| 最近记录: |