Hi Phil, Thanks for sharing your fix! A similar code change is already in trunk [1]. See also issue CMIS-657 [2].
Cheers, Florian [1] https://svn.apache.org/viewvc/chemistry/dotcmis/trunk/DotCMIS/binding/converter.cs?revision=1510195&view=markup#l112 [2] https://issues.apache.org/jira/browse/CMIS-657 > Resent as a mail, don’t know why I “posted” this...or if it makes any > difference. > > > > *From:*Philip Barr > *Posted At:* 27 September 2013 17:20 > *Posted To:* Apache Chemistry > *Conversation:* DotCMIS XmlElement Deserialisation Very Slow > *Subject:* DotCMIS XmlElement Deserialisation Very Slow > > > > Hi all, > > > > The following method in converter.cs, line 112, currently creates a new > XmlSerialiser for each invocation. This is very costly and when there > are, for example, lots of Choice elements in an aspect (which is how I > noticed it, performance slipped to 16-17 seconds for an > ISession.GetTypeDefinition() call): > > > > T DeserializeElement<T>(XmlElement element) > > > > I think this should be changed to the following: > > private static readonly Dictionary<Type, XmlSerializer> > xmlSerializerCache = new Dictionary<Type, XmlSerializer>(); > > > > ///<summary> > > ///Deserializes an elemenet. > > ///</summary> > > private static T DeserializeElement<T>(XmlElement element) > > { > > if (!xmlSerializerCache.ContainsKey(typeof(T))) > > { > > XmlRootAttribute xmlRoot = new > XmlRootAttribute(element.LocalName); > > xmlRoot.Namespace = CMISNamespaceURI; > > XmlSerializer xmlSerializer = new > XmlSerializer(typeof(T), xmlRoot); > > xmlSerializerCache.Add(typeof(T), > xmlSerializer); > > } > > > > T deserializeElement = > (T)xmlSerializerCache[typeof(T)].Deserialize(new XmlNodeReader(element)); > > > > return deserializeElement; > > } > > > > Doing this sped things up significantly for me. > > > > Cheers, > > Phil. > > > > Philip Barr |Head Of Development |SynApps Solutions Ltd > <http://www.synapps-solutions.com/>. > > mobile: +44 (0)7817556362 | skype: phil.barr > > email: [email protected] > <mailto:[email protected]> > > synapps-email-2.jpg <http://www.synapps-solutions.com/> > > twitter.png <https://twitter.com/SynAppsSol>linkedin.png > <http://www.linkedin.com/company/synapps-solutions-ltd> > > > > > > *IMPORTANT NOTICE* > > This e-mail contains information which is confidential and may be > privileged and is for the exclusive use of the recipient. If you are not > the named recipient please contact the sender immediately and delete the > communication from your system. You are hereby notified that any > disclosure, distribution or copying of this communication, in whole or > in part, is strictly prohibited. It is the responsibility of the > recipient to ensure that this message and its attachments are virus > free. Any views or opinions presented are solely those of the author and > do not necessarily represent those of the Company, its directors or > officers unless otherwise specifically stated. The Company is not > responsible for any reliance placed on the information contained herein > and excludes all liability. > > SynApps Solutions Limited is a company registered in England & Wales. > Company Registration No.: 047702224. VAT No.: 823778892 >
