我们最近从版本0.9.5.3升级到Castor 1.2,我们注意到在XML上调用unmarshal时性能急剧下降。在两种情况下,我们都解组了由castor生成的java类。为了比较,使用相同的XML,XML解组调用的时间过去大约需要10-20ms,现在大约需要2300ms。在我们的新castor实现中是否有一些明显的东西可能会丢失,可能在我错过的属性文件中,或者我应该开始考虑恢复到旧版本?也许在java类文件生成中有什么东西杀死了unmarshal调用?我也可以考虑使用Castor的替代方案,如果有充分的理由放弃它以支持别的东西。我们在weblogic服务器中使用java 1.5。
答案 0 :(得分:3)
使用castor 1.0.5,使用.castor.cdr文件(几秒钟解组,而过去需要几毫秒),我们遇到了非常严重的性能问题。
.castor.cdr生成的文件似乎包含旧/错值(不存在的类型和描述符)。删除此文件中的有罪行后,所有行都恢复正常。
希望这可以帮助那些遇到同样问题的人!
答案 1 :(得分:1)
答案 2 :(得分:1)
我们最终恢复到Castor版本0.9.5.3,并且在我们从新的XSD重新生成java类之后,性能又回升了。我不确定为什么生成的java之间存在如此大的差异,但是当解组时,1.2类的速度大约慢了2个数量级。
**编辑:**看起来像是通过创建ClassDescriptorResolvers /映射文件并确认我们可以提高性能但是因为我们使用模式生成过程创建了大约1000个对象,所以这不是真的可行的成本透视图。
答案 3 :(得分:0)
我也有这个问题,在生成XML的基本客户/地址集时,需要大约3秒才能生成包含74位客户的文档。
恢复到1.0.4(用于测试)看到这回到1.4s,
但是滚动XML会看到输出在40ms以下。我知道框架会增加一些开销,但必然会有一些原因造成这种情况。
Castor上有任何分析运行吗?
我会按照Dan的建议调查JiBX。