最近、バージョン0.9.5.3からCastor 1.2にアップグレードしましたが、XMLでアンマーシャルを呼び出すとパフォーマンスが劇的に低下することに気づきました。どちらの場合も、castorによって生成されたJavaクラスにマーシャリングを解除しています。比較のために、同一のXMLを使用すると、XMLアンマーシャル呼び出しにかかる時間は約10〜20ミリ秒でしたが、現在は約2300ミリ秒かかります。新しいキャスターの実装に欠けている可能性のある明らかなものがありますか?おそらく、見逃したプロパティファイルにありますか、それとも古いバージョンに戻すことを検討する必要がありますか?たぶん、Javaクラスファイルの生成に、アンマーシャル呼び出しを強制終了する何かがありましたか?他の何かを支持してそれを落とす正当な理由があれば、私はまた、Castorの代替案を検討するかもしれません。weblogicサーバーでjava1.5を使用しています。
4 に答える
.castor.cdrファイルでcastor1.0.5を使用すると、非常に深刻なパフォーマンスの問題が発生しました(以前は数ミリ秒かかっていましたが、アンマーシャリングには数秒かかりました)。
.castor.cdrで生成されたファイルに古い/間違った値(存在しないタイプと記述子)が含まれているように見えました。このファイルの問題のある行を削除した後、すべてが正常に戻りました。
これが同じ問題を抱えている人に役立つことを願っています!
最終的にCastorバージョン0.9.5.3に戻り、新しいXSDからJavaクラスを再生成した後、パフォーマンスが急上昇しました。結果のJavaの間にこのような大きな違いがある理由はわかりませんが、1.2クラスは、マーシャリングを解除すると約2桁遅くなりました。
**編集:** ClassDescriptorResolvers / mappingファイルを作成し、検証をオフにすると、パフォーマンスも向上する可能性がありますが、スキーマ生成プロセスで約1000個のオブジェクトを作成するため、コストの観点からは実際には実行できません。
代わりにJiBX の使用を検討することをお勧めします。Castor よりもかなり高速で (私が切り替えたプロジェクトでは 9 倍高速)、クリーンです。
編集:この関連する質問に対する私の回答も参照してください。
私もこの問題を抱えています。XML の基本的な顧客/住所セットを生成する場合、74 人の顧客を含むドキュメントを生成するのに約 3 秒かかります。
(テスト用に) 1.0.4 に戻すと、これは 1.4 秒に戻ります。
しかし、XML を手動でローリングすると、40 ミリ秒未満で出力が表示されます。
Castor で実行されたプロファイリングはありますか?
Dan の提案に従って、JiBX を調査します。