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
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.