How can CompositeFilter.filter() show up as a hot spot if you don’t have any filters at all?
Ralph > On Jul 8, 2015, at 4:26 PM, Gary Gregory <[email protected]> wrote: > > More data, it must have been a fluke because CompositeFilter.filter() still > shows up high in the hot spot list of methods called. I do not have any > Filter XML in my config... > > Gary > > On Wed, Jul 8, 2015 at 4:20 PM, Gary Gregory <[email protected] > <mailto:[email protected]>> wrote: > Hi All: > > I am now profiling my JDBC driver and I was surprised to see Log4j's > CompositeFilter.filter() show up at 0.9% of CPU time when I had logging set > to INFO which only logged two events for the whole test run. The driver does > a lot of flow tracing at the TRACE level so Log4j gets called _a lot_. > > In my XML config, I have a Filters element with a bunch of Filter child > elements.When I am debugging, I comment some filters in and out. Most of the > time, I am not debugging, so I have all the individual filters commented out. > The top level Filters element is still there. > > If I completely remove all filters from the config (no Filters element), then > the CompositeFilter disappears from profiling. > > Now that I've looked at the code, I see that the behavior is explained by: > > @PluginFactory > public static CompositeFilter createFilters(@PluginElement("Filters") > final Filter[] filters) { > final List<Filter> filterList = filters == null || filters.length == > 0 ? > new ArrayList<Filter>() : Arrays.asList(filters); > return new CompositeFilter(filterList); > } > > An XML fragment like <Filters></Filters> always creates a CompositeFilter > even though there is nothing to filter. > > I'm not sure what is the best way to fix this. The CompositeFilter could > accept a null and treat it specially (not pretty or effective since filter() > still gets called a gazillion times). Ideally, the createFilters should not > even be called in the empty Filters element case. > > This is too nasty and obscure to put in the FAQ so I'd like to discuss how to > fix it. > > Thoughts? > > Thank you, > Gary > > -- > E-Mail: [email protected] <mailto:[email protected]> | > [email protected] <mailto:[email protected]> > Java Persistence with Hibernate, Second Edition > <http://www.manning.com/bauer3/> > JUnit in Action, Second Edition <http://www.manning.com/tahchiev/> > Spring Batch in Action <http://www.manning.com/templier/> > Blog: http://garygregory.wordpress.com <http://garygregory.wordpress.com/> > Home: http://garygregory.com/ <http://garygregory.com/> > Tweet! http://twitter.com/GaryGregory <http://twitter.com/GaryGregory> > > > -- > E-Mail: [email protected] <mailto:[email protected]> | > [email protected] <mailto:[email protected]> > Java Persistence with Hibernate, Second Edition > <http://www.manning.com/bauer3/> > JUnit in Action, Second Edition <http://www.manning.com/tahchiev/> > Spring Batch in Action <http://www.manning.com/templier/> > Blog: http://garygregory.wordpress.com <http://garygregory.wordpress.com/> > Home: http://garygregory.com/ <http://garygregory.com/> > Tweet! http://twitter.com/GaryGregory <http://twitter.com/GaryGregory>
