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

