What about instantiating specific functions directly. Perhaps with a
FilterFunctionFactory which would bypass the factory finder lookup
mechanism. This of course only works if you know which function you
need, but in this case it sounds like you do.
-Justin
Andrea Aime wrote:
Hi,
today I was tracking down a performance problem in some code that
created tons
of FeaturesTypes and FeatureAttributesTypes and found out most of the
time was spent
creating filters.
The profile looks more or less like like (the first number is a time in
milliseconds):
263 514 (100%, 2 other callers)
org.geotools.feature.AttributeTypeFactory.newAttributeType
263 514 (100%, 1 other caller)
org.geotools.feature.DefaultAttributeTypeFactory.createAttributeType
261 597 (100%) org.geotools.feature.DefaultAttributeTypeFactory.length
261 260 (100%)
org.geotools.filter.FilterFactoryImpl.createFunctionExpression
218 886 (100%) org.geotools.factory.FactoryFinder$1.next
40 627 (100%, 1 other caller)
org.geotools.factory.FactoryFinder.factories
970 (99%, 2 other callers) java.lang.String.toLowerCase
329 (100%) java.lang.String.replaceFirst
120 (30%, 4 other callers) java.lang.String.equalsIgnoreCase
109 (100%) org.geotools.filter.CompareFilterImpl.addLeftValue
54 (100%)
org.geotools.filter.FilterFactoryImpl.createCompareFilter
54 (100%)
org.geotools.filter.FilterFactoryImpl.createLiteralExpression
1 830 (82%, 5 other callers) java.lang.Class.isAssignableFrom
588 (47%, 4 other callers) java.util.HashMap.get
So, my app spent more or less 264 seconds creating attribute types...
The scary
thing is that all of the time was spend searching again and again in the
classpath
for functions (in particular, for the "LenghtFunction"), and that's
very, very slow.
Now, can't we cache somehow the functions and clone them instead of
searching like
crazy in the classpath again and again?
The only problem is that FunctionExpression is not cloneable, and we
have to return a
new instance of the function at every call...
Cheers
Andrea
-------------------------------------------------------
Using Tomcat but need to do more? Need to support web services, security?
Get stuff done quickly with pre-integrated technology to make your job
easier
Download IBM WebSphere Application Server v.1.0.1 based on Apache Geronimo
http://sel.as-us.falkag.net/sel?cmd=lnk&kid=120709&bid=263057&dat=121642
_______________________________________________
Geotools-devel mailing list
Geotools-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/geotools-devel
--
Justin Deoliveira
The Open Planning Project
[EMAIL PROTECTED]
-------------------------------------------------------
Using Tomcat but need to do more? Need to support web services, security?
Get stuff done quickly with pre-integrated technology to make your job easier
Download IBM WebSphere Application Server v.1.0.1 based on Apache Geronimo
http://sel.as-us.falkag.net/sel?cmd=lnk&kid=120709&bid=263057&dat=121642
_______________________________________________
Geotools-devel mailing list
Geotools-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/geotools-devel