On 02/05/2016 06:52, Andrej Golovnin wrote:
:
I don't know how often the method #deriveModuleDescriptor(JarFile)
is executed. But compiling regular expressions over and over doesn't really
helps from the performance standpoint of view:
400 Matcher matcher = Pattern.compile("-(\\d+(\\.|$))").matcher(mn);
415 mn = mn.replaceAll("[^A-Za-z0-9]", ".") // replace
non-alphanumeric
416 .replaceAll("(\\.)(\\1)+", ".") // collapse
repeating dots
417 .replaceAll("^\\.", "") // drop leading dots
418 .replaceAll("\\.$", ""); // drop trailing dots
Maybe the regular expressions in the above lines should be precompiled
in static final fields (Pattern objects are immutable and thread safe)
to improve
the performance of the #deriveModuleDescriptor(JarFile)-method.
This is the pattern matching to derive the module name for an automatic
module. You are right that this is inefficient, we should only need to
compile the pattern once. Probably not a static field though as it also
has to be lazy. I think we have enough in this update so if you don't
mind, I would prefer to leave this until another refresh.
-Alan