system, orig: 0.22s system, paolo: 0.22s system, ".": 0.15s compat, orig: 150.88s compat, paolo: 0.43s compat, ".": 0.15s Besides the exponential behavior on the original regex, it is still about twice as slow as the system one.
The reason is that the glibc regex is a DFA-based matcher. It is much slower on regexes with backreferences, but otherwise it is faster.
1. Replace the builtin diff.java.xfuncname pattern with what Paolo suggested (though I haven't verified its correctness beyond a cursory look at the results).
I checked it a bit harder, but still it is not easy to check because of the false positives in the original regex. I'm pretty sure it's correct though; I find it even easier to read (though longer) than the original one.
I haven't looked at how large or how portable the glibc implementation is.
Decently portable, but I don't think it's worth it. Users that write regexes so complex should know of the exponential behavior, I think.
Paolo -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html