Hi Just a heads up, that the code is now in good shape, and I will work on merging to master.
On Thu, Aug 22, 2019 at 2:34 PM Claus Ibsen <claus.ib...@gmail.com> wrote: > > Hi > > JIRA ticket > https://issues.apache.org/jira/browse/CAMEL-13870 > > We have been working on further optimize Apache Camel. And the latest > step is to configure all of Camel endpoints in a faster way via direct > method invocatations of the setter methods on the endpoint or its > configuration class. > > Beforehand we did a java reflection introspection to discover the > getter/setters and then match that against the uri parameters. > > What we have done now is to source code generate fast setters > (endpoint configurer classes) that are automatic generated via > camel-apt compiler plugin. Then at runtime we discover this configurer > class and use it instead of the "old way". > > All this work is done in a separate branch with name CAMEL-13870. The > code is now ready for review (if anyone want to take a peak) and then > get shaped so it can be merged onto master branch. > > This technique is the same we already do for fast > - type converters > - fast EIP configurations > > So its just another step ahead but for the biggest of them all - all > the 300+ endpoints. > > The next level after this is to do the same for component options > (however we configure endpoints much more frequently). > > We have also added a BeanIntrospection SPI that captures runtime usage > of java reflection, so we can use this to find bottlenecks and improve > even more. > > In case you ask if its faster - yes. But its not as measureable. But > we are talking about not using Java reflection at all, and also its > invoking direct java method invocations. > > A very early micro benchmark test via tests/camel-jmh showed that > setting just 1 option with old vs fast way was approx 40% quicker - on > the log endpoint. The tests are part of the massive commit. > > For component developers then this is enabled out of the box if you > use camel-apt. But you can turn it off by setting generateConfigurer = > false in the @UriEndppoint annotation. We have done this for > camel-mllp as it has some weird issue (its not developed to best > standard so it actually surfaces a problem it has currently). You can > also turn it off at runtime by setting basicPropertyBinding=true on > component|endpoint level. > > > > > > > -- > Claus Ibsen > ----------------- > http://davsclaus.com @davsclaus > Camel in Action 2: https://www.manning.com/ibsen2 -- Claus Ibsen ----------------- http://davsclaus.com @davsclaus Camel in Action 2: https://www.manning.com/ibsen2