The JAXB RI seems to have removed the code that generates and loads accessor 
bytecode as the Injector [1] looks like it is unused. So initializing JAXB has 
probably gotten a lot faster compared to when SXC was introduced in tomee.

However, JAXB Context initialization still takes significantly longer than just 
invoking SXC code. As Richard said, I did a very basic benchmark deserializing 
a-faces-config-22.xml from FacesConfig22Test just to get a feeling of how big 
the gap is:

sxc1: 30ms
sxc2: 2ms
jaxb1: 278ms
jaxb2: 4ms

Once the JAXB Context is initialized and “warmed up” the gap is really 
insignificant. But what we do care about is initial startup performance. JAXB 
needs to do a ton of reflection to build an internal meta model while SXC moves 
a lot of this work to build time by generating source code. Note that I only 
compared the pure time it takes to unmarshal a String in memory, total time 
with JVM startup etc is probably a bit slower as there are right now 271 more 
classes to load that SXC generated. But likely still a lot faster than just 
using JAXB RI.


[1] 
https://github.com/eclipse-ee4j/jaxb-ri/blob/4.0.5-RI/jaxb-ri/runtime/impl/src/main/java/org/glassfish/jaxb/runtime/v2/runtime/reflect/opt/Injector.java

> On 9. Sep 2024, at 10:21, Richard Zowalla <r...@apache.org> wrote:
> 
> I think, that Markus did some tests. Maybe he can share? :)
> 
>> Am 09.09.2024 um 09:48 schrieb Jean-Louis Monteiro 
>> <jlmonte...@tomitribe.com>:
>> 
>> Is the performance reason still accurate nowadays?
>> Someone tested with recent JVMs?
>> --
>> Jean-Louis Monteiro
>> http://twitter.com/jlouismonteiro
>> http://www.tomitribe.com
>> 
>> 
>> On Mon, Sep 9, 2024 at 9:30 AM Richard Zowalla <r...@apache.org> wrote:
>> 
>>> Any other thoughts?
>>> 
>>>> Am 05.09.2024 um 11:08 schrieb Richard Zowalla <r...@apache.org>:
>>>> 
>>>> Yes. It is done for startup performance reasons only. At runtime, there
>>> is not a big difference.
>>>> Regarding your points.
>>>> 
>>>> (1) I think, that metatype.org <http://metatype.org/> has expired / is
>>> parked at a domain service, so it might not be possible to release SXC
>>> under that umbrella (again). We cannot put that under the ASF umbrella
>>> because of licensing constraints.
>>>> (2) The build looks good (as far as I can remember) and if we have
>>> regressions in that area, we will find out with our early adopters in an M3
>>> milestone.
>>>> (3) I am fine with that but would see that in a next stage ;-)
>>>> 
>>>> Thanks for the work, Markus. It is really appreciated!
>>>> 
>>>> Gruß
>>>> Richard
>>>> 
>>>>> Am 03.09.2024 um 16:16 schrieb Markus Jung <ju...@apache.org>:
>>>>> 
>>>>> AFAIK sticking to SXC is a decision purely made for startup performance
>>> reasons, see David's reply in
>>> https://lists.apache.org/thread/09powc11z4rnzvyzmt4xy5bcbrqwkfkh
>>>>> 
>>>>> On 03.09.24 13:43, Thomas Andraschko wrote:
>>>>>> i thought it in the past that i would be better to get rid of SXC
>>>>>> completely but maybe thats a to big task:
>>>>>> https://lists.apache.org/thread/0p4m1rw8vmv17l29s1lgclsd9bfrr7s4
>>>>>> 
>>>>>> Am Di., 3. Sept. 2024 um 13:15 Uhr schrieb Markus Jung <
>>> ju...@apache.org>:
>>>>>> 
>>>>>>> Hey all,
>>>>>>> 
>>>>>>> 
>>>>>>> I had to modify the JAXB models in openejb-jee for the concurrency 3.0
>>>>>>> implementation [1] but noticed the changes were not taken into affect.
>>>>>>> This is where I found out what openejb-jee-accessors was for.
>>>>>>> 
>>>>>>> Long story short, I was not able to get the old SXC maven plugin
>>> running
>>>>>>> and Richard and I decided to fork SXC and update it to Jakarta XML
>>>>>>> Binding 4.0. The fork can be found here [2] and Richard has done a
>>>>>>> release on maven central under the groupId
>>>>>>> io.github.rzo1.org.metatype.sxc. I integrated this new SXC release in
>>> a
>>>>>>> PR [3] and would highly appreciate if we can get some eyes from long
>>>>>>> time contributors on this.
>>>>>>> 
>>>>>>> I think there are 3 topics that require attention:
>>>>>>> 1. Do we want to switch to Richards fork? Maybe we could merge with
>>> the
>>>>>>> original code from David and release that again, though it seems the
>>>>>>> metatype.org domain is expired and owned by a parking service. We
>>> likely
>>>>>>> can't fork it in tomee as the code is not fully under the Apache 2.0
>>>>>>> License.
>>>>>>> 2. Some tests were failing after I fully regenerated the SXC accessor
>>>>>>> classes because the generated code has been modified in some places to
>>>>>>> allow unknown XML nodes. I recreated this behavior by adding
>>>>>>> @XmlAnyAttribute annotated fields where needed. We should be double
>>>>>>> checking that I did not miss anything.
>>>>>>> 3. (optional) The accessors are 100% matching the JAXB model now. IMO
>>> we
>>>>>>> should highly consider to delete these from the repository and treat
>>>>>>> them as generated sources. This would remove tens of thousands of
>>> lines
>>>>>>> of code and force future developers to make adjustments in the JAXB
>>>>>>> Model instead of hiding them in generated code. WDYT?
>>>>>>> 
>>>>>>> 
>>>>>>> Any feedback would be highly appreciated as this is a pretty
>>> significant
>>>>>>> change. The diff for the PR that regenerates all accessors [3] is 30k+
>>>>>>> lines long.
>>>>>>> 
>>>>>>> 
>>>>>>> Thanks
>>>>>>> 
>>>>>>> Markus
>>>>>>> 
>>>>>>> 
>>>>>>> [1] https://github.com/apache/tomee/pull/1458
>>>>>>> [2] https://github.com/rzo1/sxc
>>>>>>> [3] https://github.com/apache/tomee/pull/1469
>>>>>>> 
>>>>>>> 
>>>>>>> 
>>>> 
>>> 
>>> 
> 

Reply via email to