[ https://issues.apache.org/jira/browse/IBATISNET-270?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Gilles Bayon closed IBATISNET-270. ---------------------------------- Resolution: Fixed Fix Version/s: DataMapper 1.6.2 Assignee: Gilles Bayon Thanks, Corrected also in version 3.0 In SVN > ParseGenericArguments IsMatch is very slow > ------------------------------------------ > > Key: IBATISNET-270 > URL: https://issues.apache.org/jira/browse/IBATISNET-270 > Project: iBatis for .NET > Issue Type: Improvement > Components: DataMapper > Affects Versions: DataMapper 1.6.1 > Reporter: Michael Schall > Assignee: Gilles Bayon > Fix For: DataMapper 1.6.2 > > Attachments: After change.jpg, Before change.jpg > > > I knew .* is expensive in regular expressions, but I had no idea how > expensive! In our application when ConfigureAndWatch is called, the IsMatch > function call within ParseGenericArguments is taking 5000ms (reported by > dotTrace). The method is called 1005 times at 5ms a piece. By simply > removing the .* from the beginning of the regular expression, the time is > brought down to a total of 4ms (not per call, total)! I also made the RegEx > object a static of the class so we aren't re-creating the expression for each > call to bring the total time down to 2ms! I'll attach 2 images of the > before and after traces if I can. > Please check my work... I have tested it with my app and everything works > fine. > Mike > I will include the patch here: > private readonly static Regex _generic = new Regex(@"`\d*\[\[", > RegexOptions.Compiled); > private void ParseGenericArguments(string originalString) > { > // Check for match > bool isMatch = _generic.IsMatch(originalString); > if (!isMatch) -- This message is automatically generated by JIRA. - You can reply to this email to add a comment to the issue online.