Skip to content

Commit

Permalink
eclipse-ee4j#1680 Benchmark the lazy init and retrieval of Scope objects
Browse files Browse the repository at this point in the history
  • Loading branch information
whitingjr committed Jan 18, 2023
1 parent a95cb76 commit c20f5d4
Show file tree
Hide file tree
Showing 44 changed files with 304 additions and 53 deletions.
135 changes: 135 additions & 0 deletions jaxb-ri/benchmarks/pom.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,135 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
Copyright (c) 2013, 2022 Oracle and/or its affiliates. All rights reserved.
This program and the accompanying materials are made available under the
terms of the Eclipse Distribution License v. 1.0, which is available at
http://www.eclipse.org/org/documents/edl-v10.php.
SPDX-License-Identifier: BSD-3-Clause
-->

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>

<groupId>com.sun.xml.bind</groupId>
<artifactId>benchmarks</artifactId>
<version>1.0</version>
<packaging>jar</packaging>

<name>Jaxb-RI benchmarks</name>

<!--
This is the demo/sample template build script for building Java benchmarks with JMH.
Edit as needed.
-->

<dependencies>
<dependency>
<groupId>org.openjdk.jmh</groupId>
<artifactId>jmh-core</artifactId>
<version>${jmh.version}</version>
</dependency>
<dependency>
<groupId>org.openjdk.jmh</groupId>
<artifactId>jmh-generator-annprocess</artifactId>
<version>${jmh.version}</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.glassfish.jaxb</groupId>
<artifactId>jaxb-runtime</artifactId>
<version>4.0.2-SNAPSHOT</version>
</dependency>
</dependencies>

<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>

<!--
JMH version to use with this project.
-->
<jmh.version>1.35</jmh.version>

<!--
Java source/target to use for compilation.
-->
<javac.target>1.8</javac.target>

<!--
Name of the benchmark Uber-JAR to generate.
-->
<uberjar.name>benchmarks</uberjar.name>
</properties>

<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.0</version>
<configuration>
<compilerVersion>${javac.target}</compilerVersion>
<source>${javac.target}</source>
<target>${javac.target}</target>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
<version>3.2.1</version>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>shade</goal>
</goals>
<configuration>
<finalName>${uberjar.name}</finalName>
<transformers>
<transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
<mainClass>org.openjdk.jmh.Main</mainClass>
</transformer>
<transformer implementation="org.apache.maven.plugins.shade.resource.ServicesResourceTransformer"/>
</transformers>
<filters>
<filter>
<!--
Shading signed JARs will fail without this.
http://stackoverflow.com/questions/999489/invalid-signature-file-when-attempting-to-run-a-jar
-->
<artifact>*:*</artifact>
<excludes>
<exclude>META-INF/*.SF</exclude>
<exclude>META-INF/*.DSA</exclude>
<exclude>META-INF/*.RSA</exclude>
</excludes>
</filter>
</filters>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
<pluginManagement>
<plugins>
<plugin>
<artifactId>maven-deploy-plugin</artifactId>
<version>2.8.1</version>
</plugin>
<plugin>
<artifactId>maven-install-plugin</artifactId>
<version>2.5.1</version>
</plugin>
<plugin>
<artifactId>maven-site-plugin</artifactId>
<version>3.3</version>
</plugin>
</plugins>
</pluginManagement>
</build>

</project>
98 changes: 98 additions & 0 deletions jaxb-ri/benchmarks/src/main/java/benchmarks/MyBenchmark.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,98 @@
/*
* Copyright (c) 2014, Oracle America, Inc.
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* * Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
*
* * Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* * Neither the name of Oracle nor the names of its contributors may be used
* to endorse or promote products derived from this software without
* specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
* THE POSSIBILITY OF SUCH DAMAGE.
*/

package benchmarks;

import jakarta.xml.bind.JAXBException;
import org.glassfish.jaxb.runtime.v2.runtime.AssociationMap;
import org.glassfish.jaxb.runtime.v2.runtime.JAXBContextImpl;
import org.glassfish.jaxb.runtime.v2.runtime.unmarshaller.UnmarshallerImpl;
import org.glassfish.jaxb.runtime.v2.runtime.unmarshaller.UnmarshallingContext;
import org.openjdk.jmh.annotations.*;
import org.xml.sax.SAXException;

@State(Scope.Thread)
public class MyBenchmark {

@Benchmark
@Warmup(iterations = 10, batchSize=20000)
@Measurement(iterations= 10, batchSize=600000)
@BenchmarkMode(Mode.SingleShotTime)
public UnmarshallerImpl testInstantiationEager() {
return new UnmarshallerImpl(jaxb, map, true);
}

@Benchmark
@Warmup(iterations = 10, batchSize=20000)
@Measurement(iterations= 10, batchSize=600000)
@BenchmarkMode(Mode.SingleShotTime)
public UnmarshallerImpl testInstantiationLazy() {
return new UnmarshallerImpl(jaxb, map, false);
}

@Benchmark
@Warmup(iterations = 10, batchSize=20000)
@Measurement(iterations= 10, batchSize=600000)
@BenchmarkMode(Mode.SingleShotTime)
public org.glassfish.jaxb.runtime.v2.runtime.unmarshaller.Scope testGetScopeEager() throws SAXException {
UnmarshallerImpl impl = new UnmarshallerImpl(jaxb, map, true);
UnmarshallingContext ctx = impl.getContext();
ctx.startScope(0);
org.glassfish.jaxb.runtime.v2.runtime.unmarshaller.Scope scope = ctx.getScopeEager(0);
ctx.endScope(0);
return scope;
}

@Benchmark
@Warmup(iterations = 10, batchSize=20000)
@Measurement(iterations= 10, batchSize=600000)
@BenchmarkMode(Mode.SingleShotTime)
public org.glassfish.jaxb.runtime.v2.runtime.unmarshaller.Scope testGetScopeLazy() throws SAXException {
UnmarshallerImpl impl = new UnmarshallerImpl(jaxb, map, false);
UnmarshallingContext ctx = impl.getContext();
ctx.startScope(0);
org.glassfish.jaxb.runtime.v2.runtime.unmarshaller.Scope scope = ctx.getScopeLazy(0);
ctx.endScope(0);
return scope;
}

@Setup(Level.Trial)
public void init() throws JAXBException {
JAXBContextImpl.JAXBContextBuilder builder = new JAXBContextImpl.JAXBContextBuilder();
builder.setClasses(new Class[]{MyBenchmark.class});
jaxb = builder.build();
map = new AssociationMap();
}

AssociationMap map;

JAXBContextImpl jaxb;
}
2 changes: 1 addition & 1 deletion jaxb-ri/boms/bom-ext/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@
<groupId>org.glassfish.jaxb</groupId>
<artifactId>jaxb-bom</artifactId>
<relativePath>../bom/pom.xml</relativePath>
<version>4.0.1</version>
<version>4.0.2-SNAPSHOT</version>
</parent>

<groupId>com.sun.xml.bind</groupId>
Expand Down
2 changes: 1 addition & 1 deletion jaxb-ri/boms/bom/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@

<groupId>org.glassfish.jaxb</groupId>
<artifactId>jaxb-bom</artifactId>
<version>4.0.1</version>
<version>4.0.2-SNAPSHOT</version>

<packaging>pom</packaging>
<name>JAXB BOM</name>
Expand Down
2 changes: 1 addition & 1 deletion jaxb-ri/bundles/core/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@
<parent>
<groupId>com.sun.xml.bind.mvn</groupId>
<artifactId>jaxb-bundles</artifactId>
<version>4.0.1</version>
<version>4.0.2-SNAPSHOT</version>
<relativePath>../pom.xml</relativePath>
</parent>

Expand Down
2 changes: 1 addition & 1 deletion jaxb-ri/bundles/jxc/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@
<parent>
<groupId>com.sun.xml.bind.mvn</groupId>
<artifactId>jaxb-bundles</artifactId>
<version>4.0.1</version>
<version>4.0.2-SNAPSHOT</version>
<relativePath>../pom.xml</relativePath>
</parent>

Expand Down
2 changes: 1 addition & 1 deletion jaxb-ri/bundles/osgi/osgi/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@
<parent>
<groupId>com.sun.xml.bind.mvn</groupId>
<artifactId>jaxb-osgi</artifactId>
<version>4.0.1</version>
<version>4.0.2-SNAPSHOT</version>
<relativePath>../pom.xml</relativePath>
</parent>

Expand Down
2 changes: 1 addition & 1 deletion jaxb-ri/bundles/osgi/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@
<parent>
<groupId>com.sun.xml.bind.mvn</groupId>
<artifactId>jaxb-bundles</artifactId>
<version>4.0.1</version>
<version>4.0.2-SNAPSHOT</version>
<relativePath>../pom.xml</relativePath>
</parent>

Expand Down
2 changes: 1 addition & 1 deletion jaxb-ri/bundles/osgi/tests/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@
<parent>
<groupId>com.sun.xml.bind.mvn</groupId>
<artifactId>jaxb-osgi</artifactId>
<version>4.0.1</version>
<version>4.0.2-SNAPSHOT</version>
</parent>

<artifactId>tests</artifactId>
Expand Down
2 changes: 1 addition & 1 deletion jaxb-ri/bundles/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@
<parent>
<groupId>com.sun.xml.bind.mvn</groupId>
<artifactId>jaxb-parent</artifactId>
<version>4.0.1</version>
<version>4.0.2-SNAPSHOT</version>
<relativePath>../pom.xml</relativePath>
</parent>

Expand Down
2 changes: 1 addition & 1 deletion jaxb-ri/bundles/ri/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@
<parent>
<groupId>com.sun.xml.bind.mvn</groupId>
<artifactId>jaxb-bundles</artifactId>
<version>4.0.1</version>
<version>4.0.2-SNAPSHOT</version>
<relativePath>../pom.xml</relativePath>
</parent>

Expand Down
2 changes: 1 addition & 1 deletion jaxb-ri/bundles/runtime/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@
<parent>
<groupId>com.sun.xml.bind.mvn</groupId>
<artifactId>jaxb-bundles</artifactId>
<version>4.0.1</version>
<version>4.0.2-SNAPSHOT</version>
<relativePath>../pom.xml</relativePath>
</parent>

Expand Down
2 changes: 1 addition & 1 deletion jaxb-ri/bundles/xjc/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@
<parent>
<groupId>com.sun.xml.bind.mvn</groupId>
<artifactId>jaxb-bundles</artifactId>
<version>4.0.1</version>
<version>4.0.2-SNAPSHOT</version>
<relativePath>../pom.xml</relativePath>
</parent>

Expand Down
2 changes: 1 addition & 1 deletion jaxb-ri/codemodel/codemodel-annotation-compiler/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@
<parent>
<groupId>com.sun.xml.bind.mvn</groupId>
<artifactId>jaxb-codemodel-parent</artifactId>
<version>4.0.1</version>
<version>4.0.2-SNAPSHOT</version>
</parent>

<groupId>org.glassfish.jaxb</groupId>
Expand Down
2 changes: 1 addition & 1 deletion jaxb-ri/codemodel/codemodel/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@
<parent>
<groupId>com.sun.xml.bind.mvn</groupId>
<artifactId>jaxb-codemodel-parent</artifactId>
<version>4.0.1</version>
<version>4.0.2-SNAPSHOT</version>
<relativePath>../pom.xml</relativePath>
</parent>

Expand Down
2 changes: 1 addition & 1 deletion jaxb-ri/codemodel/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@

<groupId>com.sun.xml.bind.mvn</groupId>
<artifactId>jaxb-codemodel-parent</artifactId>
<version>4.0.1</version>
<version>4.0.2-SNAPSHOT</version>
<packaging>pom</packaging>
<name>Codemodel</name>
<description>Java source code generation library</description>
Expand Down
2 changes: 1 addition & 1 deletion jaxb-ri/core/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@
<parent>
<groupId>com.sun.xml.bind.mvn</groupId>
<artifactId>jaxb-parent</artifactId>
<version>4.0.1</version>
<version>4.0.2-SNAPSHOT</version>
<relativePath>../pom.xml</relativePath>
</parent>

Expand Down
2 changes: 1 addition & 1 deletion jaxb-ri/docs/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@
<parent>
<groupId>com.sun.xml.bind.mvn</groupId>
<artifactId>jaxb-parent</artifactId>
<version>4.0.1</version>
<version>4.0.2-SNAPSHOT</version>
<relativePath>../pom.xml</relativePath>
</parent>

Expand Down
2 changes: 1 addition & 1 deletion jaxb-ri/docs/release-documentation/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@
<parent>
<groupId>com.sun.xml.bind.mvn</groupId>
<artifactId>jaxb-docs-parent</artifactId>
<version>4.0.1</version>
<version>4.0.2-SNAPSHOT</version>
</parent>

<groupId>com.sun.xml.bind</groupId>
Expand Down
2 changes: 1 addition & 1 deletion jaxb-ri/docs/www/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@
<parent>
<groupId>com.sun.xml.bind.mvn</groupId>
<artifactId>jaxb-docs-parent</artifactId>
<version>4.0.1</version>
<version>4.0.2-SNAPSHOT</version>
<relativePath>../pom.xml</relativePath>
</parent>

Expand Down

0 comments on commit c20f5d4

Please sign in to comment.