[Schmitzm-commits] r2013 - trunk/schmitzm-core/src/main/java/de/schmitzm/regex
scm-commit at wald.intevation.org
scm-commit at wald.intevation.org
Sat May 26 23:02:17 CEST 2012
Author: alfonx
Date: 2012-05-26 23:02:17 +0200 (Sat, 26 May 2012)
New Revision: 2013
Modified:
trunk/schmitzm-core/src/main/java/de/schmitzm/regex/RegexCache.java
Log:
Modified: trunk/schmitzm-core/src/main/java/de/schmitzm/regex/RegexCache.java
===================================================================
--- trunk/schmitzm-core/src/main/java/de/schmitzm/regex/RegexCache.java 2012-05-26 20:47:02 UTC (rev 2012)
+++ trunk/schmitzm-core/src/main/java/de/schmitzm/regex/RegexCache.java 2012-05-26 21:02:17 UTC (rev 2013)
@@ -34,7 +34,7 @@
* TODO Ein String der länger ist als die hier angegebene Anzahl Zeichen wir nicht gecached. Die Wahrscheinlichkeit,
* dass der selbe Sting nochmal auftaucht wird als zu gering eingeschätzt.
**/
- private static final int CACHE_VALUES_TO_RESULT_MAX_VALUE_LENGTH = 200;
+ private static final int CACHE_VALUES_TO_RESULT_MAX_VALUE_LENGTH = 500;
private static final int CACHE_VALUES_TO_RESULT_SIZE = 500;
@@ -70,10 +70,10 @@
return false;
final String value = object instanceof String ? (String) object : object.toString();
- Matcher m = getMatcher(regex, value);
- return m.find();
+// Matcher m = getMatcher(regex, value);
+// return m.find();
- // return result(regex, value) != null;
+ return result(regex, value) != null;
}
/**
@@ -95,6 +95,8 @@
final static Map<String, ThreadLocal<Matcher>> matchersCachedThreadLocalPerRegex = new ConcurrentHashMap<String, ThreadLocal<Matcher>>(
10000);
+
+ public static boolean matcherCache = false;
/**
* Diese Methode ist gedacht um die Erstellung von Matcher-Objekten in der JVM zu reduzieren. Es für bis zu 10000
@@ -104,6 +106,12 @@
* angeforderd, wird zuerst {@link Matcher#reset(CharSequence)} ausgeführt.
*/
public Matcher getMatcher(final String regex, final String text) {
+
+ if (!matcherCache) {
+ return getPattern(regex).matcher(text);
+ }
+
+
ThreadLocal<Matcher> threadLocal = matchersCachedThreadLocalPerRegex.get(regex);
synchronized (regex) {
@@ -168,6 +176,7 @@
*/
public final MatchResult result(final String regex, final String value) {
+ // Wenn der value-String zu lang ist, dann einfach so machten
if (value.length() > CACHE_VALUES_TO_RESULT_MAX_VALUE_LENGTH) {
Matcher m = getMatcher(regex, value);
boolean found = m.find();
More information about the Schmitzm-commits
mailing list