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

