Johannes,

can you please raise a Jira issue and attach the relevant files ?

Thanks
Werner

Johannes Rauber wrote:
> Thanks for your advice. I transfered a minimal portion of my code into a
> example. What it simply does is to unmarshal from a pregenerated xml-file,
> which is also provided. I profiled the example and couldn't find any
> hotspots. On my machine i'am around 500 t/sec (2.5 GHZ). I think i'am
> doing something wrong, but after reading the manual and the examples i
> wasn't able to boost the performance.
> Maybe you could have a look into it.
> 
> Regards,
> Johannes
> 
>> Johannes,
>>
>> without executable code that highlights the problem at hand, i.e. an
>> e.g. JUnit test that allows us to replay your problem, it will be
>> impossible to assist you in any way.
>>
>> Other than that, let me (based upon my experience as a committer for
>> more than 5 yrs) reassure you I have used (and seen folks using) Castor
>> in high-performance execution environments,a and have not heard any
>> complaints towards performance.
>>
>> Regards
>> Werner
>>
>> Johannes Rauber wrote:
>>> Hi,
>>>
>>> while implementing castor as our xml marshaller, i did some performance
>>> measurements. The marshalling and unmarshalling
>>> performance is orders of magnitude lower than with JAXB. This strikes me
>>> as odd, i expected a little increase but not as much as this.
>>> With Jaxb I get 1800 transactions per second, with Castor just about
>>> 10-12. I' am using castor 1.2 with java 1.6.
>>> Could you help me out finding where it goes wrong?
>>>
>>> Side and Currency are simple enum's
>>>
>>> ------------ mapping.xml ------------------------------
>>> <mapping>
>>> <description>Castor Mapping</description>
>>>
>>> <class name="de.hdm.marshal.dto.Header">
>>> <map-to xml="header"/>
>>> </class>
>>>
>>> <class name="de.hdm.marshal.dto.MultiPayloadMessage">
>>> <map-to xml="message"/>
>>> <field name="header" type="de.hdm.marshal.dto.Header">
>>> <bind-xml name="header" node="element"/>
>>> </field>
>>> <field name="payload" type="de.hdm.marshal.dto.Position"
>>> collection="arraylist">
>>> <bind-xml name="payload" node="element"/>
>>> </field>
>>> </class>
>>>
>>> <class name="de.hdm.marshal.dto.Position">
>>> <map-to xml="position"/>
>>> <field name="id" type="integer">
>>> <bind-xml name="id" node="element"/>
>>> </field>
>>> <field name="baseCurrency" type="de.hdm.marshal.dto.Currency">
>>> <bind-xml name="baseCurrency" />
>>> </field>
>>> <field name="termsCurrency" type="de.hdm.marshal.dto.Currency">
>>> <bind-xml name="termsCurrency" />
>>> </field>
>>> <field name="valueDate" type="date">
>>> <bind-xml name="valueDate" node="element"/>
>>> </field>
>>> <field name="amount" type="big-decimal">
>>> <bind-xml name="amount" node="element"/>
>>> </field>
>>> <field name="price" type="big-decimal">
>>> <bind-xml name="price" node="element"/>
>>> </field>
>>> <field name="side" type="de.hdm.marshal.dto.Side">
>>> <bind-xml name="side"/>
>>> </field>
>>> </class>
>>> </mapping>
>>>
>>> -------------------- object MultiPayloadMessage --------------
>>> package de.hdm.marshal.dto;
>>>
>>> import javax.xml.bind.annotation.XmlRootElement;
>>> import javax.xml.bind.annotation.XmlElement;
>>> import java.util.ArrayList;
>>> import java.lang.reflect.Array;
>>>
>>> /**
>>> * User: Johannes
>>> * Date: 22.09.2008
>>> * Time: 18:55:51
>>> */
>>> @XmlRootElement( namespace = "http://www.my-objects.com/"; )
>>> public class MultiPayloadMessage {
>>> private ArrayList<Position> payload = new ArrayList<Position>();
>>> private Header header;
>>>
>>> public MultiPayloadMessage() {
>>> }
>>>
>>> public void addPayload(Position psoition) {
>>> payload.add(psoition);
>>> }
>>>
>>> public ArrayList<Position> getPayload() {
>>> return payload;
>>> }
>>>
>>> public void setPayload(ArrayList<Position> payload) {
>>> this.payload = payload;
>>> }
>>>
>>> public Header getHeader() {
>>> return header;
>>> }
>>>
>>> public void setHeader(Header header) {
>>> this.header = header;
>>> }
>>> }
>>>
>>> ---------------------------- object Header -------------------------
>>>
>>> package de.hdm.marshal.dto;
>>>
>>> /**
>>> * User: Johannes
>>> * Date: 22.09.2008
>>> * Time: 19:00:06
>>> */
>>> public class Header {
>>> public Header() {
>>> }
>>> }
>>>
>>> ---------------------- object Position
>>> -----------------------------------
>>>
>>> package de.hdm.marshal.dto;
>>>
>>> import java.util.Date;
>>> import java.math.BigDecimal;
>>>
>>> /**
>>> * User: Johannes
>>> * Date: 22.09.2008
>>> * Time: 18:53:23
>>> */
>>> public class Position {
>>> private Currency baseCurrency;
>>> private Currency termsCurrency;
>>> private Date valueDate;
>>> private BigDecimal amount;
>>> private BigDecimal price;
>>> private Side side;
>>> private int id;
>>>
>>> public Position() {
>>> }
>>>
>>> public int getId() {
>>> return id;
>>> }
>>>
>>> public void setId(int id) {
>>> this.id = id;
>>> }
>>>
>>> public Currency getBaseCurrency() {
>>> return baseCurrency;
>>> }
>>>
>>> public void setBaseCurrency(Currency baseCurrency) {
>>> this.baseCurrency = baseCurrency;
>>> }
>>>
>>> public Currency getTermsCurrency() {
>>> return termsCurrency;
>>> }
>>>
>>> public void setTermsCurrency(Currency termsCurrency) {
>>> this.termsCurrency = termsCurrency;
>>> }
>>>
>>> public Date getValueDate() {
>>> return valueDate;
>>> }
>>>
>>> public void setValueDate(Date valueDate) {
>>> this.valueDate = valueDate;
>>> }
>>>
>>> public BigDecimal getAmount() {
>>> return amount;
>>> }
>>>
>>> public void setAmount(BigDecimal amount) {
>>> this.amount = amount;
>>> }
>>>
>>> public BigDecimal getPrice() {
>>> return price;
>>> }
>>>
>>> public void setPrice(BigDecimal price) {
>>> this.price = price;
>>> }
>>>
>>> public Side getSide() {
>>> return side;
>>> }
>>>
>>> public void setSide(Side side) {
>>> this.side = side;
>>> }
>>> }
>>>
>>> ----------------------------------- Unmarshaling Code
>>> ----------------------------------------------------------
>>>
>>> Mapping mapping = new Mapping();
>>> try {
>>> mapping.loadMapping("castorMapping.xml");
>>> } catch (IOException e) {
>>> System.out.println(e.toString());
>>> } catch (MappingException e) {
>>> System.out.println(e.toString());
>>> }
>>>
>>> um = new Unmarshaller(MultiPayloadMessage.class);
>>> try {
>>> um.setMapping(mapping);
>>> um.setValidation(false);
>>> } catch (MappingException e) {
>>> System.out.println(e.toString());
>>> }
>>>
>>> int rounds = 100000;
>>> start = System.nanoTime();
>>> MultiPayloadMessage message;
>>> for (int i = 0; i < rounds; i++) {
>>>
>>> StringReader reader = new StringReader(testData.get(r.nextInt(100)));
>>> try {
>>> message = (MultiPayloadMessage) um.unmarshal(reader);
>>> } catch (MarshalException e) {
>>> System.out.println(e.toString());
>>> } catch (ValidationException e) {
>>> System.out.println(e.toString());
>>> }
>>> }
>>> end = System.nanoTime();
>>>
>>>
>>>
>>>
>>>
>>>
>>> ---------------------------------------------------------------------
>>> To unsubscribe from this list, please visit:
>>>
>>>     http://xircles.codehaus.org/manage_email
>>>
>>>
>> ---------------------------------------------------------------------
>> To unsubscribe from this list, please visit:
>>
>>     http://xircles.codehaus.org/manage_email
>>
>>
>>
>>
>> ------------------------------------------------------------------------
>>
>> ---------------------------------------------------------------------
>> To unsubscribe from this list, please visit:
>>
>>     http://xircles.codehaus.org/manage_email

---------------------------------------------------------------------
To unsubscribe from this list, please visit:

    http://xircles.codehaus.org/manage_email


Reply via email to