diff --git a/.gitignore b/.gitignore index 5fe2078..b459e25 100644 --- a/.gitignore +++ b/.gitignore @@ -7,3 +7,4 @@ target/ # virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml hs_err_pid* +Thumbs.db diff --git a/README.md b/README.md index 7ccb6b6..7b0ccd9 100644 --- a/README.md +++ b/README.md @@ -9,14 +9,16 @@ to solving common JNI use-cases and then present the results. The benchmarks at present are: 1. [com.evolvedbinary.jnibench.common.call](tree/main/src/main/java/com/evolvedbinary/jnibench/common/call) - - Benchmarks for [Creating Objects with JNI](ObjectCreationBenchmarks.md) - [(results)](ObjectCreationBenchmarks.md#object-creation-results). + Benchmarks for [Creating Objects with JNI](ObjectCreationBenchmarks.md) + [(results)](ObjectCreationBenchmarks.md#object-creation-results). 2. [com.evolvedbinary.jnibench.common.array](tree/main/src/main/java/com/evolvedbinary/jnibench/common/array) - - Benchmarks for [Passing Arrays with JNI](ArrayPassingBenchmarks.md) - [(results)](ArrayPassingBenchmarks.md#array-passing-results). + Benchmarks for [Passing Arrays with JNI](ArrayPassingBenchmarks.md) + [(results)](ArrayPassingBenchmarks.md#array-passing-results). -3. [com.evolvedbinary.jnibench.common.bytearray](tree/main/src/main/java/com/evolvedbinary/jnibench/common/bytearray), and [com.evolvedbinary.jnibench.common.getputjni](tree/main/src/main/java/com/evolvedbinary/jnibench/common/getputjni) - Benchmarks for [JNI Data Transfer](DataBenchmarks.md). +3. [com.evolvedbinary.jnibench.common.bytearray](tree/main/src/main/java/com/evolvedbinary/jnibench/common/bytearray), + and [com.evolvedbinary.jnibench.common.getputjni](tree/main/src/main/java/com/evolvedbinary/jnibench/common/getputjni) - + Benchmarks for [JNI Data Transfer](DataBenchmarks.md). # Reproducing @@ -40,29 +42,41 @@ can use `benchmark-100.sh` and/or `benchmark-100-with-close.sh`, or ## JMH support -We have support for running the tests via JMH, see `jmh-benchmarks.sh`. You can -also pass `--help` to the script to see JMH options. - ### Byte array benchmarks There are two benchmarks, which are currently available only via JMH: ByteArrayFromNativeBenchmark and ByteArrayToNativeBenchmark. They can be run -multiple times using `jmh-benchmarks-parametrized.sh` with: +multiple times using `jmhrun.py` with: + +```bash +python3 jmhrun.py -c jmh_tiny_array_from_native.json +``` + +The above command will run JMH with `ByteArrayFromNativeBenchmark` and store the result in CSV files in a subdirectory +under `results` named via timestamp. You can also pass `--help` to the script to see additional JMH options that can be +used. + +Results can then be plotted using the `jmhplot.py` script. For example, to produce results +for the `ByteArrayFromNativeBenchmark` example above, you can run: ```bash -./jmh-benchmarks-parametrized.sh -i 10 -b ByteArrayToNativeBenchmark -o results/ -f csv +python3 jmhplot.py -f results/jmh_2026-01-29T12:11:26.472664 ``` -The above command will run JMH with `ByteArrayToNativeBenchmark` benchmarks `10` times and store result in CSV files in `results` directory. You can also pass `--help` to the script to see additional JMH options that can be used. +(Replace the `-f` parameter with the appropriate directory path.) + +Command line parameter `f` expects a path to the directory with the JMH result CSV files from running the benchmarks +with `jmhrun.py`. +Some benchmarks will require an additional parameter `-c` like this: -Results can then be plotted using the `process_byte_array_benchmarks_results.py` script. For example, to produce results for the `ByteArrayToNativeBenchmark` benchmarks, you can run: ```bash -python3 process_byte_array_benchmarks_results.py -p results/ --param-name "Param: keySize" --chart-title "Performance comparison of passing byte array with {} bytes via JNI" +python3 jmhplot.py -f results/jmh_2026-01-29T12:11:26.472664 -c jmh_plot_iterator.json ``` -Command line parameter `p` expects a path to the directory with the JMH result CSV files from running the benchmarks with `jmh-benchmarks-parametrized.sh`. -The `{}` in the `chart-title` parameter will be replaced by the value from the `param-name` column. +The script creates the resulting graphs in the same directory as the one where it finds the CSV files. # Other Resources -1. Java Foreign Interface prototype and performance results in RocksJava (i.e. Panama) - https://rocksdb.org/blog/2024/02/20/foreign-function-interface.html + +1. Java Foreign Interface prototype and performance results in RocksJava (i.e. + Panama) - https://rocksdb.org/blog/2024/02/20/foreign-function-interface.html 2. RocksJava API Performance Improvements - https://rocksdb.org/blog/2023/11/06/java-jni-benchmarks.html diff --git a/analysis/arrayFromNative/fig_65536_allbig.png b/analysis/arrayFromNative/fig_65536_allbig.png new file mode 100644 index 0000000..f7ba8c3 Binary files /dev/null and b/analysis/arrayFromNative/fig_65536_allbig.png differ diff --git a/analysis/arrayFromNative/fig_65536_allsmall.png b/analysis/arrayFromNative/fig_65536_allsmall.png new file mode 100644 index 0000000..0be1de8 Binary files /dev/null and b/analysis/arrayFromNative/fig_65536_allsmall.png differ diff --git a/analysis/arrayFromNative/fig_65536_ba.png b/analysis/arrayFromNative/fig_65536_ba.png new file mode 100644 index 0000000..d81e63c Binary files /dev/null and b/analysis/arrayFromNative/fig_65536_ba.png differ diff --git a/analysis/arrayFromNative/fig_65536_nopoolbig.png b/analysis/arrayFromNative/fig_65536_nopoolbig.png new file mode 100644 index 0000000..3e08bfc Binary files /dev/null and b/analysis/arrayFromNative/fig_65536_nopoolbig.png differ diff --git a/analysis/arrayFromNative/fig_65536_nopoolsmall.png b/analysis/arrayFromNative/fig_65536_nopoolsmall.png new file mode 100644 index 0000000..3f198a5 Binary files /dev/null and b/analysis/arrayFromNative/fig_65536_nopoolsmall.png differ diff --git a/analysis/arrayFromNative/jmh_2026-01-16T12:19:55.210351.md b/analysis/arrayFromNative/jmh_2026-01-16T12:19:55.210351.md new file mode 100644 index 0000000..1be4d75 --- /dev/null +++ b/analysis/arrayFromNative/jmh_2026-01-16T12:19:55.210351.md @@ -0,0 +1,41 @@ +## JMH Run +This JMH run was generated on 2026-01-16T12:19:55.210351 +#### Config +The configuration was read from `/home/rklein/jni-benchmarks/jmh_run_array_from_native.json` +```json +{ + "help": false, + "benchmark": "ByteArrayFromNativeBenchmark", + "jvmargs": [ + "Xmx24G", + "XX:+HeapDumpOnOutOfMemoryError" + ], + "params": { + "valueSize": [ + 50, + 4096 + ], + "cacheMB": [ + 1 + ], + "checksum": [ + "none" + ] + }, + "options": { + "batchsize": 2, + "warmupiterations": 1, + "warmuptime": "10us", + "iterations": 1, + "time": "10us" + }, + "result.path": "./results", + "java.library.path": "target/jni-benchmarks-1.0.1-SNAPSHOT-application/jni-benchmarks-1.0.1-SNAPSHOT/lib", + "jar": "target/jni-benchmarks-1.0.1-SNAPSHOT-benchmarks.nar" +} +``` +#### Command +The java command executed to run the tests +``` +java -Xmx24G -XX:+HeapDumpOnOutOfMemoryError -Djava.library.path=target/jni-benchmarks-1.0.1-SNAPSHOT-application/jni-benchmarks-1.0.1-SNAPSHOT/lib -jar target/jni-benchmarks-1.0.1-SNAPSHOT-benchmarks.nar ByteArrayFromNativeBenchmark -p valueSize=50,4096 -p cacheMB=1 -p checksum=none -bs 2 -wi 1 -w 10us -i 1 -r 10us -rff results/jmh_2026-01-16T12:19:55.210351/jmh_2026-01-16T12:19:55.210351.csv +``` diff --git a/analysis/arrayFromNative/system_info.json b/analysis/arrayFromNative/system_info.json new file mode 100644 index 0000000..2d9fcf0 --- /dev/null +++ b/analysis/arrayFromNative/system_info.json @@ -0,0 +1,3 @@ +{ + "system_info": "x86_64 - Intel(R) Xeon(R) CPU E5-1650 v3 @ 3.50GHz - 125GB RAM - Ubuntu 24.04.3 LTS - Kernel: 6.14.0-36-generic - openjdk version \"1.8.0_472\"" +} \ No newline at end of file diff --git a/analysis/byteArrayFromNativeJava21/fig_65536_allbig.png b/analysis/byteArrayFromNativeJava21/fig_65536_allbig.png new file mode 100644 index 0000000..905ea3f Binary files /dev/null and b/analysis/byteArrayFromNativeJava21/fig_65536_allbig.png differ diff --git a/analysis/byteArrayFromNativeJava21/fig_65536_allsmall.png b/analysis/byteArrayFromNativeJava21/fig_65536_allsmall.png new file mode 100644 index 0000000..1ed097a Binary files /dev/null and b/analysis/byteArrayFromNativeJava21/fig_65536_allsmall.png differ diff --git a/analysis/byteArrayFromNativeJava21/fig_65536_ba.png b/analysis/byteArrayFromNativeJava21/fig_65536_ba.png new file mode 100644 index 0000000..a75920e Binary files /dev/null and b/analysis/byteArrayFromNativeJava21/fig_65536_ba.png differ diff --git a/analysis/byteArrayFromNativeJava21/fig_65536_nopoolbig.png b/analysis/byteArrayFromNativeJava21/fig_65536_nopoolbig.png new file mode 100644 index 0000000..f590f7d Binary files /dev/null and b/analysis/byteArrayFromNativeJava21/fig_65536_nopoolbig.png differ diff --git a/analysis/byteArrayFromNativeJava21/fig_65536_nopoolsmall.png b/analysis/byteArrayFromNativeJava21/fig_65536_nopoolsmall.png new file mode 100644 index 0000000..ecde360 Binary files /dev/null and b/analysis/byteArrayFromNativeJava21/fig_65536_nopoolsmall.png differ diff --git a/analysis/byteArrayFromNativeJava21/jmh_2026-01-19T16:05:42.022395.md b/analysis/byteArrayFromNativeJava21/jmh_2026-01-19T16:05:42.022395.md new file mode 100644 index 0000000..9fe6ad4 --- /dev/null +++ b/analysis/byteArrayFromNativeJava21/jmh_2026-01-19T16:05:42.022395.md @@ -0,0 +1,45 @@ +## JMH Run +This JMH run was generated on 2026-01-19T16:05:42.022395 +#### Config +The configuration was read from `/home/rklein/jni-benchmarks/jmh_tiny_array_from_native_java21.json` +```json +{ + "benchmark": "ByteArrayFromNativeBenchmarkJava21", + "jvmargs": [ + "Xmx4G", + "XX:ErrorFile=./results/hs_err_pid%p.log", + "XX:+HeapDumpOnOutOfMemoryError", + "-enable-preview" + ], + "params": { + "valueSize": [ + 50, + 1024, + 4096, + 16384 + ], + "cacheMB": [ + 1 + ], + "checksum": [ + "none", + "copyout" + ] + }, + "options": { + "batchsize": 1, + "warmupiterations": 5, + "warmuptime": "10ms", + "iterations": 5, + "time": "50ms" + }, + "result.path": "./results", + "java.library.path": "target/jni-benchmarks-1.0.1-SNAPSHOT-application/jni-benchmarks-1.0.1-SNAPSHOT/lib", + "jar": "target/jni-benchmarks-1.0.1-SNAPSHOT-benchmarks.nar" +} +``` +#### Command +The java command executed to run the tests +``` +java -Xmx4G -XX:ErrorFile=./results/hs_err_pid%p.log -XX:+HeapDumpOnOutOfMemoryError --enable-preview -Djava.library.path=target/jni-benchmarks-1.0.1-SNAPSHOT-application/jni-benchmarks-1.0.1-SNAPSHOT/lib -jar target/jni-benchmarks-1.0.1-SNAPSHOT-benchmarks.nar ByteArrayFromNativeBenchmarkJava21 -p valueSize=50,1024,4096,16384 -p cacheMB=1 -p checksum=none,copyout -bs 1 -wi 5 -w 10ms -i 5 -r 50ms -rff results/jmh_2026-01-19T16:05:42.022395/jmh_2026-01-19T16:05:42.022395.csv +``` diff --git a/analysis/byteArrayFromNativeJava21/system_info.json b/analysis/byteArrayFromNativeJava21/system_info.json new file mode 100644 index 0000000..612aabf --- /dev/null +++ b/analysis/byteArrayFromNativeJava21/system_info.json @@ -0,0 +1,3 @@ +{ + "system_info": "x86_64 - Intel(R) Xeon(R) CPU E5-1650 v3 @ 3.50GHz - 125GB RAM - Ubuntu 24.04.3 LTS - Kernel: 6.14.0-36-generic - openjdk version \"21.0.9\" 2025-10-21" +} \ No newline at end of file diff --git a/analysis/byteArrayFromNativeJava25/fig_65536_allbig.png b/analysis/byteArrayFromNativeJava25/fig_65536_allbig.png new file mode 100644 index 0000000..78fa1d8 Binary files /dev/null and b/analysis/byteArrayFromNativeJava25/fig_65536_allbig.png differ diff --git a/analysis/byteArrayFromNativeJava25/fig_65536_allsmall.png b/analysis/byteArrayFromNativeJava25/fig_65536_allsmall.png new file mode 100644 index 0000000..624a3f4 Binary files /dev/null and b/analysis/byteArrayFromNativeJava25/fig_65536_allsmall.png differ diff --git a/analysis/byteArrayFromNativeJava25/fig_65536_ba.png b/analysis/byteArrayFromNativeJava25/fig_65536_ba.png new file mode 100644 index 0000000..9c79b3a Binary files /dev/null and b/analysis/byteArrayFromNativeJava25/fig_65536_ba.png differ diff --git a/analysis/byteArrayFromNativeJava25/fig_65536_nopoolbig.png b/analysis/byteArrayFromNativeJava25/fig_65536_nopoolbig.png new file mode 100644 index 0000000..4656a44 Binary files /dev/null and b/analysis/byteArrayFromNativeJava25/fig_65536_nopoolbig.png differ diff --git a/analysis/byteArrayFromNativeJava25/fig_65536_nopoolsmall.png b/analysis/byteArrayFromNativeJava25/fig_65536_nopoolsmall.png new file mode 100644 index 0000000..1deb560 Binary files /dev/null and b/analysis/byteArrayFromNativeJava25/fig_65536_nopoolsmall.png differ diff --git a/analysis/byteArrayFromNativeJava25/jmh_2026-01-19T15:41:17.308765.md b/analysis/byteArrayFromNativeJava25/jmh_2026-01-19T15:41:17.308765.md new file mode 100644 index 0000000..79e79b0 --- /dev/null +++ b/analysis/byteArrayFromNativeJava25/jmh_2026-01-19T15:41:17.308765.md @@ -0,0 +1,44 @@ +## JMH Run +This JMH run was generated on 2026-01-19T15:41:17.308765 +#### Config +The configuration was read from `/home/rklein/jni-benchmarks/jmh_tiny_array_from_native_java25.json` +```json +{ + "benchmark": "ByteArrayFromNativeBenchmarkJava25", + "jvmargs": [ + "Xmx4G", + "XX:ErrorFile=./results/hs_err_pid%p.log", + "XX:+HeapDumpOnOutOfMemoryError" + ], + "params": { + "valueSize": [ + 50, + 1024, + 4096, + 16384 + ], + "cacheMB": [ + 1 + ], + "checksum": [ + "none", + "copyout" + ] + }, + "options": { + "batchsize": 1, + "warmupiterations": 5, + "warmuptime": "10ms", + "iterations": 5, + "time": "50ms" + }, + "result.path": "./results", + "java.library.path": "target/jni-benchmarks-1.0.1-SNAPSHOT-application/jni-benchmarks-1.0.1-SNAPSHOT/lib", + "jar": "target/jni-benchmarks-1.0.1-SNAPSHOT-benchmarks.nar" +} +``` +#### Command +The java command executed to run the tests +``` +java -Xmx4G -XX:ErrorFile=./results/hs_err_pid%p.log -XX:+HeapDumpOnOutOfMemoryError -Djava.library.path=target/jni-benchmarks-1.0.1-SNAPSHOT-application/jni-benchmarks-1.0.1-SNAPSHOT/lib -jar target/jni-benchmarks-1.0.1-SNAPSHOT-benchmarks.nar ByteArrayFromNativeBenchmarkJava25 -p valueSize=50,1024,4096,16384 -p cacheMB=1 -p checksum=none,copyout -bs 1 -wi 5 -w 10ms -i 5 -r 50ms -rff results/jmh_2026-01-19T15:41:17.308765/jmh_2026-01-19T15:41:17.308765.csv +``` diff --git a/analysis/byteArrayFromNativeJava25/system_info.json b/analysis/byteArrayFromNativeJava25/system_info.json new file mode 100644 index 0000000..d9f13ef --- /dev/null +++ b/analysis/byteArrayFromNativeJava25/system_info.json @@ -0,0 +1,3 @@ +{ + "system_info": "x86_64 - Intel(R) Xeon(R) CPU E5-1650 v3 @ 3.50GHz - 125GB RAM - Ubuntu 24.04.3 LTS - Kernel: 6.14.0-36-generic - openjdk version \"25.0.1\" 2025-10-21" +} \ No newline at end of file diff --git a/analysis/byteArrayFromNativeJava8/fig_65536_allbig.png b/analysis/byteArrayFromNativeJava8/fig_65536_allbig.png new file mode 100644 index 0000000..f627a9e Binary files /dev/null and b/analysis/byteArrayFromNativeJava8/fig_65536_allbig.png differ diff --git a/analysis/byteArrayFromNativeJava8/fig_65536_allsmall.png b/analysis/byteArrayFromNativeJava8/fig_65536_allsmall.png new file mode 100644 index 0000000..de36ab5 Binary files /dev/null and b/analysis/byteArrayFromNativeJava8/fig_65536_allsmall.png differ diff --git a/analysis/byteArrayFromNativeJava8/fig_65536_ba.png b/analysis/byteArrayFromNativeJava8/fig_65536_ba.png new file mode 100644 index 0000000..edc90f6 Binary files /dev/null and b/analysis/byteArrayFromNativeJava8/fig_65536_ba.png differ diff --git a/analysis/byteArrayFromNativeJava8/fig_65536_nopoolbig.png b/analysis/byteArrayFromNativeJava8/fig_65536_nopoolbig.png new file mode 100644 index 0000000..574d6cd Binary files /dev/null and b/analysis/byteArrayFromNativeJava8/fig_65536_nopoolbig.png differ diff --git a/analysis/byteArrayFromNativeJava8/fig_65536_nopoolsmall.png b/analysis/byteArrayFromNativeJava8/fig_65536_nopoolsmall.png new file mode 100644 index 0000000..531044e Binary files /dev/null and b/analysis/byteArrayFromNativeJava8/fig_65536_nopoolsmall.png differ diff --git a/analysis/byteArrayFromNativeJava8/jmh_2026-01-17T09:45:55.943339.md b/analysis/byteArrayFromNativeJava8/jmh_2026-01-17T09:45:55.943339.md new file mode 100644 index 0000000..5278009 --- /dev/null +++ b/analysis/byteArrayFromNativeJava8/jmh_2026-01-17T09:45:55.943339.md @@ -0,0 +1,41 @@ +## JMH Run +This JMH run was generated on 2026-01-17T09:45:55.943339 +#### Config +The configuration was read from `/home/rklein/jni-benchmarks/jmh_run_array_from_native.json` +```json +{ + "help": false, + "benchmark": "ByteArrayFromNativeBenchmark", + "jvmargs": [ + "Xmx24G", + "XX:+HeapDumpOnOutOfMemoryError" + ], + "params": { + "valueSize": [ + 50, + 4096 + ], + "cacheMB": [ + 1 + ], + "checksum": [ + "none" + ] + }, + "options": { + "batchsize": 2, + "warmupiterations": 1, + "warmuptime": "10us", + "iterations": 1, + "time": "10us" + }, + "result.path": "./results", + "java.library.path": "target/jni-benchmarks-1.0.1-SNAPSHOT-application/jni-benchmarks-1.0.1-SNAPSHOT/lib", + "jar": "target/jni-benchmarks-1.0.1-SNAPSHOT-benchmarks.nar" +} +``` +#### Command +The java command executed to run the tests +``` +java -Xmx24G -XX:+HeapDumpOnOutOfMemoryError -Djava.library.path=target/jni-benchmarks-1.0.1-SNAPSHOT-application/jni-benchmarks-1.0.1-SNAPSHOT/lib -jar target/jni-benchmarks-1.0.1-SNAPSHOT-benchmarks.nar ByteArrayFromNativeBenchmark -p valueSize=50,4096 -p cacheMB=1 -p checksum=none -bs 2 -wi 1 -w 10us -i 1 -r 10us -rff results/jmh_2026-01-17T09:45:55.943339/jmh_2026-01-17T09:45:55.943339.csv +``` diff --git a/analysis/byteArrayFromNativeJava8/system_info.json b/analysis/byteArrayFromNativeJava8/system_info.json new file mode 100644 index 0000000..2d9fcf0 --- /dev/null +++ b/analysis/byteArrayFromNativeJava8/system_info.json @@ -0,0 +1,3 @@ +{ + "system_info": "x86_64 - Intel(R) Xeon(R) CPU E5-1650 v3 @ 3.50GHz - 125GB RAM - Ubuntu 24.04.3 LTS - Kernel: 6.14.0-36-generic - openjdk version \"1.8.0_472\"" +} \ No newline at end of file diff --git a/analysis/byteArrayFromNativeJava8_2/fig_65536_allbig.png b/analysis/byteArrayFromNativeJava8_2/fig_65536_allbig.png new file mode 100644 index 0000000..f3fecdb Binary files /dev/null and b/analysis/byteArrayFromNativeJava8_2/fig_65536_allbig.png differ diff --git a/analysis/byteArrayFromNativeJava8_2/fig_65536_allsmall.png b/analysis/byteArrayFromNativeJava8_2/fig_65536_allsmall.png new file mode 100644 index 0000000..97afe45 Binary files /dev/null and b/analysis/byteArrayFromNativeJava8_2/fig_65536_allsmall.png differ diff --git a/analysis/byteArrayFromNativeJava8_2/fig_65536_ba.png b/analysis/byteArrayFromNativeJava8_2/fig_65536_ba.png new file mode 100644 index 0000000..33d72b5 Binary files /dev/null and b/analysis/byteArrayFromNativeJava8_2/fig_65536_ba.png differ diff --git a/analysis/byteArrayFromNativeJava8_2/fig_65536_nopoolbig.png b/analysis/byteArrayFromNativeJava8_2/fig_65536_nopoolbig.png new file mode 100644 index 0000000..d130bd9 Binary files /dev/null and b/analysis/byteArrayFromNativeJava8_2/fig_65536_nopoolbig.png differ diff --git a/analysis/byteArrayFromNativeJava8_2/fig_65536_nopoolsmall.png b/analysis/byteArrayFromNativeJava8_2/fig_65536_nopoolsmall.png new file mode 100644 index 0000000..aa0f49a Binary files /dev/null and b/analysis/byteArrayFromNativeJava8_2/fig_65536_nopoolsmall.png differ diff --git a/analysis/byteArrayFromNativeJava8_2/jmh_2026-01-17T10:13:15.573031.md b/analysis/byteArrayFromNativeJava8_2/jmh_2026-01-17T10:13:15.573031.md new file mode 100644 index 0000000..128a2b4 --- /dev/null +++ b/analysis/byteArrayFromNativeJava8_2/jmh_2026-01-17T10:13:15.573031.md @@ -0,0 +1,41 @@ +## JMH Run +This JMH run was generated on 2026-01-17T10:13:15.573031 +#### Config +The configuration was read from `/home/rklein/jni-benchmarks/jmh_run_array_from_native.json` +```json +{ + "help": false, + "benchmark": "ByteArrayFromNativeBenchmark", + "jvmargs": [ + "Xmx24G", + "XX:+HeapDumpOnOutOfMemoryError" + ], + "params": { + "valueSize": [ + 50, + 4096 + ], + "cacheMB": [ + 1 + ], + "checksum": [ + "none" + ] + }, + "options": { + "batchsize": 2, + "warmupiterations": 1, + "warmuptime": "10us", + "iterations": 1, + "time": "10us" + }, + "result.path": "./results", + "java.library.path": "target/jni-benchmarks-1.0.1-SNAPSHOT-application/jni-benchmarks-1.0.1-SNAPSHOT/lib", + "jar": "target/jni-benchmarks-1.0.1-SNAPSHOT-benchmarks.nar" +} +``` +#### Command +The java command executed to run the tests +``` +java -Xmx24G -XX:+HeapDumpOnOutOfMemoryError -Djava.library.path=target/jni-benchmarks-1.0.1-SNAPSHOT-application/jni-benchmarks-1.0.1-SNAPSHOT/lib -jar target/jni-benchmarks-1.0.1-SNAPSHOT-benchmarks.nar ByteArrayFromNativeBenchmark -p valueSize=50,4096 -p cacheMB=1 -p checksum=none -bs 2 -wi 1 -w 10us -i 1 -r 10us -rff results/jmh_2026-01-17T10:13:15.573031/jmh_2026-01-17T10:13:15.573031.csv +``` diff --git a/analysis/byteArrayFromNativeJava8_2/system_info.json b/analysis/byteArrayFromNativeJava8_2/system_info.json new file mode 100644 index 0000000..2d9fcf0 --- /dev/null +++ b/analysis/byteArrayFromNativeJava8_2/system_info.json @@ -0,0 +1,3 @@ +{ + "system_info": "x86_64 - Intel(R) Xeon(R) CPU E5-1650 v3 @ 3.50GHz - 125GB RAM - Ubuntu 24.04.3 LTS - Kernel: 6.14.0-36-generic - openjdk version \"1.8.0_472\"" +} \ No newline at end of file diff --git a/analysis/byteArrayFromNative_full/jmh_2026-01-17T22:30:09.141651.md b/analysis/byteArrayFromNative_full/jmh_2026-01-17T22:30:09.141651.md new file mode 100644 index 0000000..7683c2e --- /dev/null +++ b/analysis/byteArrayFromNative_full/jmh_2026-01-17T22:30:09.141651.md @@ -0,0 +1,49 @@ +## JMH Run +This JMH run was generated on 2026-01-17T22:30:09.141651 +#### Config +The configuration was read from `/home/rklein/jni-benchmarks/jmh_full_array_from_native.json` +```json +{ + "benchmark": "ByteArrayFromNativeBenchmark", + "jvmargs": [ + "Xmx4G", + "XX:ErrorFile=./results/hs_err_pid%p.log", + "XX:+HeapDumpOnOutOfMemoryError" + ], + "params": { + "valueSize": [ + 10, + 50, + 512, + 1024, + 4096, + 8192, + 16384, + 32768, + 65536 + ], + "cacheMB": [ + 1 + ], + "checksum": [ + "none", + "copyout" + ] + }, + "options": { + "batchsize": 1, + "warmupiterations": 20, + "warmuptime": "50ms", + "iterations": 50, + "time": "500ms" + }, + "result.path": "./results", + "java.library.path": "target/jni-benchmarks-1.0.1-SNAPSHOT-application/jni-benchmarks-1.0.1-SNAPSHOT/lib", + "jar": "target/jni-benchmarks-1.0.1-SNAPSHOT-benchmarks.nar" +} +``` +#### Command +The java command executed to run the tests +``` +java -Xmx4G -XX:ErrorFile=./results/hs_err_pid%p.log -XX:+HeapDumpOnOutOfMemoryError -Djava.library.path=target/jni-benchmarks-1.0.1-SNAPSHOT-application/jni-benchmarks-1.0.1-SNAPSHOT/lib -jar target/jni-benchmarks-1.0.1-SNAPSHOT-benchmarks.nar ByteArrayFromNativeBenchmark -p valueSize=10,50,512,1024,4096,8192,16384,32768,65536 -p cacheMB=1 -p checksum=none,copyout -bs 1 -wi 20 -w 50ms -i 50 -r 500ms -rff results/jmh_2026-01-17T22:30:09.141651/jmh_2026-01-17T22:30:09.141651.csv +``` diff --git a/analysis/byteArrayFromNative_full/system_info.json b/analysis/byteArrayFromNative_full/system_info.json new file mode 100644 index 0000000..2d9fcf0 --- /dev/null +++ b/analysis/byteArrayFromNative_full/system_info.json @@ -0,0 +1,3 @@ +{ + "system_info": "x86_64 - Intel(R) Xeon(R) CPU E5-1650 v3 @ 3.50GHz - 125GB RAM - Ubuntu 24.04.3 LTS - Kernel: 6.14.0-36-generic - openjdk version \"1.8.0_472\"" +} \ No newline at end of file diff --git a/analysis/byteArrayFromNative_tiny/fig_65536_allbig.png b/analysis/byteArrayFromNative_tiny/fig_65536_allbig.png new file mode 100644 index 0000000..86e9c98 Binary files /dev/null and b/analysis/byteArrayFromNative_tiny/fig_65536_allbig.png differ diff --git a/analysis/byteArrayFromNative_tiny/fig_65536_allsmall.png b/analysis/byteArrayFromNative_tiny/fig_65536_allsmall.png new file mode 100644 index 0000000..927289b Binary files /dev/null and b/analysis/byteArrayFromNative_tiny/fig_65536_allsmall.png differ diff --git a/analysis/byteArrayFromNative_tiny/fig_65536_ba.png b/analysis/byteArrayFromNative_tiny/fig_65536_ba.png new file mode 100644 index 0000000..a326ec1 Binary files /dev/null and b/analysis/byteArrayFromNative_tiny/fig_65536_ba.png differ diff --git a/analysis/byteArrayFromNative_tiny/fig_65536_nopoolbig.png b/analysis/byteArrayFromNative_tiny/fig_65536_nopoolbig.png new file mode 100644 index 0000000..31baa9d Binary files /dev/null and b/analysis/byteArrayFromNative_tiny/fig_65536_nopoolbig.png differ diff --git a/analysis/byteArrayFromNative_tiny/fig_65536_nopoolsmall.png b/analysis/byteArrayFromNative_tiny/fig_65536_nopoolsmall.png new file mode 100644 index 0000000..ddd45fc Binary files /dev/null and b/analysis/byteArrayFromNative_tiny/fig_65536_nopoolsmall.png differ diff --git a/analysis/byteArrayFromNative_tiny/jmh_2026-01-17T22:13:43.984496.md b/analysis/byteArrayFromNative_tiny/jmh_2026-01-17T22:13:43.984496.md new file mode 100644 index 0000000..6472e2d --- /dev/null +++ b/analysis/byteArrayFromNative_tiny/jmh_2026-01-17T22:13:43.984496.md @@ -0,0 +1,44 @@ +## JMH Run +This JMH run was generated on 2026-01-17T22:13:43.984496 +#### Config +The configuration was read from `/home/rklein/jni-benchmarks/jmh_tiny_array_from_native.json` +```json +{ + "benchmark": "ByteArrayFromNativeBenchmark", + "jvmargs": [ + "Xmx4G", + "XX:ErrorFile=./results/hs_err_pid%p.log", + "XX:+HeapDumpOnOutOfMemoryError" + ], + "params": { + "valueSize": [ + 50, + 1024, + 4096, + 16384 + ], + "cacheMB": [ + 1 + ], + "checksum": [ + "none", + "copyout" + ] + }, + "options": { + "batchsize": 1, + "warmupiterations": 5, + "warmuptime": "10ms", + "iterations": 5, + "time": "50ms" + }, + "result.path": "./results", + "java.library.path": "target/jni-benchmarks-1.0.1-SNAPSHOT-application/jni-benchmarks-1.0.1-SNAPSHOT/lib", + "jar": "target/jni-benchmarks-1.0.1-SNAPSHOT-benchmarks.nar" +} +``` +#### Command +The java command executed to run the tests +``` +java -Xmx4G -XX:ErrorFile=./results/hs_err_pid%p.log -XX:+HeapDumpOnOutOfMemoryError -Djava.library.path=target/jni-benchmarks-1.0.1-SNAPSHOT-application/jni-benchmarks-1.0.1-SNAPSHOT/lib -jar target/jni-benchmarks-1.0.1-SNAPSHOT-benchmarks.nar ByteArrayFromNativeBenchmark -p valueSize=50,1024,4096,16384 -p cacheMB=1 -p checksum=none,copyout -bs 1 -wi 5 -w 10ms -i 5 -r 50ms -rff results/jmh_2026-01-17T22:13:43.984496/jmh_2026-01-17T22:13:43.984496.csv +``` diff --git a/analysis/byteArrayFromNative_tiny/system_info.json b/analysis/byteArrayFromNative_tiny/system_info.json new file mode 100644 index 0000000..2d9fcf0 --- /dev/null +++ b/analysis/byteArrayFromNative_tiny/system_info.json @@ -0,0 +1,3 @@ +{ + "system_info": "x86_64 - Intel(R) Xeon(R) CPU E5-1650 v3 @ 3.50GHz - 125GB RAM - Ubuntu 24.04.3 LTS - Kernel: 6.14.0-36-generic - openjdk version \"1.8.0_472\"" +} \ No newline at end of file diff --git a/analysis/iterator_Java8/fig_1024_all.png b/analysis/iterator_Java8/fig_1024_all.png new file mode 100644 index 0000000..c5e8fb7 Binary files /dev/null and b/analysis/iterator_Java8/fig_1024_all.png differ diff --git a/analysis/iterator_Java8/fig_128_all.png b/analysis/iterator_Java8/fig_128_all.png new file mode 100644 index 0000000..8c570f1 Binary files /dev/null and b/analysis/iterator_Java8/fig_128_all.png differ diff --git a/analysis/iterator_Java8/fig_16_all.png b/analysis/iterator_Java8/fig_16_all.png new file mode 100644 index 0000000..2ed2cd2 Binary files /dev/null and b/analysis/iterator_Java8/fig_16_all.png differ diff --git a/analysis/iterator_java21/fig_1024_all.png b/analysis/iterator_java21/fig_1024_all.png new file mode 100644 index 0000000..1271c08 Binary files /dev/null and b/analysis/iterator_java21/fig_1024_all.png differ diff --git a/analysis/iterator_java21/fig_128_all.png b/analysis/iterator_java21/fig_128_all.png new file mode 100644 index 0000000..20851de Binary files /dev/null and b/analysis/iterator_java21/fig_128_all.png differ diff --git a/analysis/iterator_java21/fig_16_all.png b/analysis/iterator_java21/fig_16_all.png new file mode 100644 index 0000000..f3d7a2b Binary files /dev/null and b/analysis/iterator_java21/fig_16_all.png differ diff --git a/analysis/iterator_java21/jmh_2026-01-27T10:38:49.198389.md b/analysis/iterator_java21/jmh_2026-01-27T10:38:49.198389.md new file mode 100644 index 0000000..980c449 --- /dev/null +++ b/analysis/iterator_java21/jmh_2026-01-27T10:38:49.198389.md @@ -0,0 +1,42 @@ +## JMH Run +This JMH run was generated on 2026-01-27T10:38:49.198389 +#### Config +The configuration was read from `/home/rklein/jni-benchmarks/jmh_iterators_java21.json` +```json +{ + "benchmark": "IteratorBenchmarkJavaFfm", + "jvmargs": [ + "Xmx4G", + "XX:ErrorFile=./results/hs_err_pid%p.log", + "XX:+HeapDumpOnOutOfMemoryError", + "-enable-preview" + ], + "params": { + "numElements": [ + 10, + 100, + 1000 + ], + "elementSize": [ + 16, + 128, + 1024 + ] + }, + "options": { + "batchsize": 1, + "warmupiterations": 5, + "warmuptime": "10ms", + "iterations": 5, + "time": "50ms" + }, + "result.path": "./results", + "java.library.path": "target/jni-benchmarks-1.0.1-SNAPSHOT-application/jni-benchmarks-1.0.1-SNAPSHOT/lib", + "jar": "target/jni-benchmarks-1.0.1-SNAPSHOT-benchmarks.nar" +} +``` +#### Command +The java command executed to run the tests +``` +java -Xmx4G -XX:ErrorFile=./results/hs_err_pid%p.log -XX:+HeapDumpOnOutOfMemoryError --enable-preview -Djava.library.path=target/jni-benchmarks-1.0.1-SNAPSHOT-application/jni-benchmarks-1.0.1-SNAPSHOT/lib -jar target/jni-benchmarks-1.0.1-SNAPSHOT-benchmarks.nar IteratorBenchmarkJavaFfm -p numElements=10,100,1000 -p elementSize=16,128,1024 -bs 1 -wi 5 -w 10ms -i 5 -r 50ms -rff results/jmh_2026-01-27T10:38:49.198389/jmh_2026-01-27T10:38:49.198389.csv +``` diff --git a/analysis/iterator_java21/system_info.json b/analysis/iterator_java21/system_info.json new file mode 100644 index 0000000..a3cefb4 --- /dev/null +++ b/analysis/iterator_java21/system_info.json @@ -0,0 +1,3 @@ +{ + "system_info": "x86_64 - Intel(R) Xeon(R) CPU E5-1650 v3 @ 3.50GHz - 125GB RAM - Ubuntu 24.04.3 LTS - Kernel: 6.14.0-37-generic - openjdk version \"21.0.9\" 2025-10-21" +} \ No newline at end of file diff --git a/analysis/iterator_java25/fig_1024_all.png b/analysis/iterator_java25/fig_1024_all.png new file mode 100644 index 0000000..c2381cd Binary files /dev/null and b/analysis/iterator_java25/fig_1024_all.png differ diff --git a/analysis/iterator_java25/fig_128_all.png b/analysis/iterator_java25/fig_128_all.png new file mode 100644 index 0000000..78c7b0e Binary files /dev/null and b/analysis/iterator_java25/fig_128_all.png differ diff --git a/analysis/iterator_java25/fig_16_all.png b/analysis/iterator_java25/fig_16_all.png new file mode 100644 index 0000000..21d0517 Binary files /dev/null and b/analysis/iterator_java25/fig_16_all.png differ diff --git a/analysis/iterator_java25/jmh_2026-01-27T10:43:22.913782.md b/analysis/iterator_java25/jmh_2026-01-27T10:43:22.913782.md new file mode 100644 index 0000000..0282cf7 --- /dev/null +++ b/analysis/iterator_java25/jmh_2026-01-27T10:43:22.913782.md @@ -0,0 +1,41 @@ +## JMH Run +This JMH run was generated on 2026-01-27T10:43:22.913782 +#### Config +The configuration was read from `/home/rklein/jni-benchmarks/jmh_iterators_java25.json` +```json +{ + "benchmark": "IteratorBenchmarkJavaFfm", + "jvmargs": [ + "Xmx4G", + "XX:ErrorFile=./results/hs_err_pid%p.log", + "XX:+HeapDumpOnOutOfMemoryError" + ], + "params": { + "numElements": [ + 10, + 100, + 1000 + ], + "elementSize": [ + 16, + 128, + 1024 + ] + }, + "options": { + "batchsize": 1, + "warmupiterations": 5, + "warmuptime": "10ms", + "iterations": 5, + "time": "50ms" + }, + "result.path": "./results", + "java.library.path": "target/jni-benchmarks-1.0.1-SNAPSHOT-application/jni-benchmarks-1.0.1-SNAPSHOT/lib", + "jar": "target/jni-benchmarks-1.0.1-SNAPSHOT-benchmarks.nar" +} +``` +#### Command +The java command executed to run the tests +``` +java -Xmx4G -XX:ErrorFile=./results/hs_err_pid%p.log -XX:+HeapDumpOnOutOfMemoryError -Djava.library.path=target/jni-benchmarks-1.0.1-SNAPSHOT-application/jni-benchmarks-1.0.1-SNAPSHOT/lib -jar target/jni-benchmarks-1.0.1-SNAPSHOT-benchmarks.nar IteratorBenchmarkJavaFfm -p numElements=10,100,1000 -p elementSize=16,128,1024 -bs 1 -wi 5 -w 10ms -i 5 -r 50ms -rff results/jmh_2026-01-27T10:43:22.913782/jmh_2026-01-27T10:43:22.913782.csv +``` diff --git a/analysis/iterator_java25/system_info.json b/analysis/iterator_java25/system_info.json new file mode 100644 index 0000000..d1a4fac --- /dev/null +++ b/analysis/iterator_java25/system_info.json @@ -0,0 +1,3 @@ +{ + "system_info": "x86_64 - Intel(R) Xeon(R) CPU E5-1650 v3 @ 3.50GHz - 125GB RAM - Ubuntu 24.04.3 LTS - Kernel: 6.14.0-37-generic - openjdk version \"25.0.1\" 2025-10-21" +} \ No newline at end of file diff --git a/analysis/java21_fullGet/Java21FullGet.zip b/analysis/java21_fullGet/Java21FullGet.zip new file mode 100644 index 0000000..f61bafb Binary files /dev/null and b/analysis/java21_fullGet/Java21FullGet.zip differ diff --git a/analysis/java21_fullGet/fig_1024_1_copyout_allbig.png b/analysis/java21_fullGet/fig_1024_1_copyout_allbig.png new file mode 100644 index 0000000..d731551 Binary files /dev/null and b/analysis/java21_fullGet/fig_1024_1_copyout_allbig.png differ diff --git a/analysis/java21_fullGet/fig_1024_1_copyout_allsmall.png b/analysis/java21_fullGet/fig_1024_1_copyout_allsmall.png new file mode 100644 index 0000000..ff8e8ff Binary files /dev/null and b/analysis/java21_fullGet/fig_1024_1_copyout_allsmall.png differ diff --git a/analysis/java21_fullGet/fig_1024_1_copyout_ba.png b/analysis/java21_fullGet/fig_1024_1_copyout_ba.png new file mode 100644 index 0000000..cc1d3f8 Binary files /dev/null and b/analysis/java21_fullGet/fig_1024_1_copyout_ba.png differ diff --git a/analysis/java21_fullGet/fig_1024_1_copyout_bb.png b/analysis/java21_fullGet/fig_1024_1_copyout_bb.png new file mode 100644 index 0000000..7d3e451 Binary files /dev/null and b/analysis/java21_fullGet/fig_1024_1_copyout_bb.png differ diff --git a/analysis/java21_fullGet/fig_1024_1_copyout_crit.png b/analysis/java21_fullGet/fig_1024_1_copyout_crit.png new file mode 100644 index 0000000..29e289b Binary files /dev/null and b/analysis/java21_fullGet/fig_1024_1_copyout_crit.png differ diff --git a/analysis/java21_fullGet/fig_1024_1_copyout_dir.png b/analysis/java21_fullGet/fig_1024_1_copyout_dir.png new file mode 100644 index 0000000..0cc0ee4 Binary files /dev/null and b/analysis/java21_fullGet/fig_1024_1_copyout_dir.png differ diff --git a/analysis/java21_fullGet/fig_1024_1_copyout_getelems.png b/analysis/java21_fullGet/fig_1024_1_copyout_getelems.png new file mode 100644 index 0000000..496d49b Binary files /dev/null and b/analysis/java21_fullGet/fig_1024_1_copyout_getelems.png differ diff --git a/analysis/java21_fullGet/fig_1024_1_copyout_ind.png b/analysis/java21_fullGet/fig_1024_1_copyout_ind.png new file mode 100644 index 0000000..e8bc2fb Binary files /dev/null and b/analysis/java21_fullGet/fig_1024_1_copyout_ind.png differ diff --git a/analysis/java21_fullGet/fig_1024_1_copyout_nopoolbig.png b/analysis/java21_fullGet/fig_1024_1_copyout_nopoolbig.png new file mode 100644 index 0000000..94bdc63 Binary files /dev/null and b/analysis/java21_fullGet/fig_1024_1_copyout_nopoolbig.png differ diff --git a/analysis/java21_fullGet/fig_1024_1_copyout_nopoolsmall.png b/analysis/java21_fullGet/fig_1024_1_copyout_nopoolsmall.png new file mode 100644 index 0000000..d58862b Binary files /dev/null and b/analysis/java21_fullGet/fig_1024_1_copyout_nopoolsmall.png differ diff --git a/analysis/java21_fullGet/fig_1024_1_copyout_setreg.png b/analysis/java21_fullGet/fig_1024_1_copyout_setreg.png new file mode 100644 index 0000000..7f2e7f3 Binary files /dev/null and b/analysis/java21_fullGet/fig_1024_1_copyout_setreg.png differ diff --git a/analysis/java21_fullGet/fig_1024_1_none_allbig.png b/analysis/java21_fullGet/fig_1024_1_none_allbig.png new file mode 100644 index 0000000..f265fb7 Binary files /dev/null and b/analysis/java21_fullGet/fig_1024_1_none_allbig.png differ diff --git a/analysis/java21_fullGet/fig_1024_1_none_allsmall.png b/analysis/java21_fullGet/fig_1024_1_none_allsmall.png new file mode 100644 index 0000000..15da925 Binary files /dev/null and b/analysis/java21_fullGet/fig_1024_1_none_allsmall.png differ diff --git a/analysis/java21_fullGet/fig_1024_1_none_ba.png b/analysis/java21_fullGet/fig_1024_1_none_ba.png new file mode 100644 index 0000000..e02660d Binary files /dev/null and b/analysis/java21_fullGet/fig_1024_1_none_ba.png differ diff --git a/analysis/java21_fullGet/fig_1024_1_none_bb.png b/analysis/java21_fullGet/fig_1024_1_none_bb.png new file mode 100644 index 0000000..93f650e Binary files /dev/null and b/analysis/java21_fullGet/fig_1024_1_none_bb.png differ diff --git a/analysis/java21_fullGet/fig_1024_1_none_crit.png b/analysis/java21_fullGet/fig_1024_1_none_crit.png new file mode 100644 index 0000000..e85a0ec Binary files /dev/null and b/analysis/java21_fullGet/fig_1024_1_none_crit.png differ diff --git a/analysis/java21_fullGet/fig_1024_1_none_dir.png b/analysis/java21_fullGet/fig_1024_1_none_dir.png new file mode 100644 index 0000000..cc21c18 Binary files /dev/null and b/analysis/java21_fullGet/fig_1024_1_none_dir.png differ diff --git a/analysis/java21_fullGet/fig_1024_1_none_getelems.png b/analysis/java21_fullGet/fig_1024_1_none_getelems.png new file mode 100644 index 0000000..7f15a55 Binary files /dev/null and b/analysis/java21_fullGet/fig_1024_1_none_getelems.png differ diff --git a/analysis/java21_fullGet/fig_1024_1_none_ind.png b/analysis/java21_fullGet/fig_1024_1_none_ind.png new file mode 100644 index 0000000..c413e6d Binary files /dev/null and b/analysis/java21_fullGet/fig_1024_1_none_ind.png differ diff --git a/analysis/java21_fullGet/fig_1024_1_none_nopoolbig.png b/analysis/java21_fullGet/fig_1024_1_none_nopoolbig.png new file mode 100644 index 0000000..79f8766 Binary files /dev/null and b/analysis/java21_fullGet/fig_1024_1_none_nopoolbig.png differ diff --git a/analysis/java21_fullGet/fig_1024_1_none_nopoolsmall.png b/analysis/java21_fullGet/fig_1024_1_none_nopoolsmall.png new file mode 100644 index 0000000..3bb518b Binary files /dev/null and b/analysis/java21_fullGet/fig_1024_1_none_nopoolsmall.png differ diff --git a/analysis/java21_fullGet/fig_1024_1_none_setreg.png b/analysis/java21_fullGet/fig_1024_1_none_setreg.png new file mode 100644 index 0000000..f7a2069 Binary files /dev/null and b/analysis/java21_fullGet/fig_1024_1_none_setreg.png differ diff --git a/analysis/java21_fullGet/jmh_2026-01-06T12:17:50.089711.md b/analysis/java21_fullGet/jmh_2026-01-06T12:17:50.089711.md new file mode 100644 index 0000000..756ad72 --- /dev/null +++ b/analysis/java21_fullGet/jmh_2026-01-06T12:17:50.089711.md @@ -0,0 +1,50 @@ +## JMH Run +This JMH run was generated on 2026-01-06T12:17:50.089711 +#### Config +The configuration was read from `/home/rklein/jni-benchmarks/jmh_full_get_java21.json` +```json +{ + "benchmark": "GetJNIBenchmark", + "jvmargs": [ + "Xmx4G", + "XX:ErrorFile=./results/hs_err_pid%p.log", + "XX:+HeapDumpOnOutOfMemoryError", + "-enable-preview" + ], + "params": { + "valueSize": [ + 10, + 50, + 512, + 1024, + 4096, + 8192, + 16384, + 32768, + 65536 + ], + "cacheMB": [ + 1 + ], + "checksum": [ + "none", + "copyout" + ] + }, + "options": { + "batchsize": 1, + "warmupiterations": 20, + "warmuptime": "50ms", + "iterations": 50, + "time": "500ms" + }, + "result.path": "./results", + "java.library.path": "target/jni-benchmarks-1.0.1-SNAPSHOT-application/jni-benchmarks-1.0.1-SNAPSHOT/lib", + "jar": "target/jni-benchmarks-1.0.1-SNAPSHOT-benchmarks.nar" +} +``` +#### Command +The java command executed to run the tests +``` +java -Xmx4G -XX:ErrorFile=./results/hs_err_pid%p.log -XX:+HeapDumpOnOutOfMemoryError --enable-preview -Djava.library.path=target/jni-benchmarks-1.0.1-SNAPSHOT-application/jni-benchmarks-1.0.1-SNAPSHOT/lib -jar target/jni-benchmarks-1.0.1-SNAPSHOT-benchmarks.nar GetJNIBenchmark -p valueSize=10,50,512,1024,4096,8192,16384,32768,65536 -p cacheMB=1 -p checksum=none,copyout -bs 1 -wi 20 -w 50ms -i 50 -r 500ms -rff results/jmh_2026-01-06T12:17:50.089711/jmh_2026-01-06T12:17:50.089711.csv +``` diff --git a/analysis/java21_fullGet/system_info.json b/analysis/java21_fullGet/system_info.json new file mode 100644 index 0000000..612aabf --- /dev/null +++ b/analysis/java21_fullGet/system_info.json @@ -0,0 +1,3 @@ +{ + "system_info": "x86_64 - Intel(R) Xeon(R) CPU E5-1650 v3 @ 3.50GHz - 125GB RAM - Ubuntu 24.04.3 LTS - Kernel: 6.14.0-36-generic - openjdk version \"21.0.9\" 2025-10-21" +} \ No newline at end of file diff --git a/analysis/java21_fullPut/Java21FullPut.zip b/analysis/java21_fullPut/Java21FullPut.zip new file mode 100644 index 0000000..525494b Binary files /dev/null and b/analysis/java21_fullPut/Java21FullPut.zip differ diff --git a/analysis/java21_fullPut/fig_1024_1_17_copyin_allbig.png b/analysis/java21_fullPut/fig_1024_1_17_copyin_allbig.png new file mode 100644 index 0000000..40942f3 Binary files /dev/null and b/analysis/java21_fullPut/fig_1024_1_17_copyin_allbig.png differ diff --git a/analysis/java21_fullPut/fig_1024_1_17_copyin_allsmall.png b/analysis/java21_fullPut/fig_1024_1_17_copyin_allsmall.png new file mode 100644 index 0000000..722a6e8 Binary files /dev/null and b/analysis/java21_fullPut/fig_1024_1_17_copyin_allsmall.png differ diff --git a/analysis/java21_fullPut/fig_1024_1_17_copyin_ba.png b/analysis/java21_fullPut/fig_1024_1_17_copyin_ba.png new file mode 100644 index 0000000..043ea1c Binary files /dev/null and b/analysis/java21_fullPut/fig_1024_1_17_copyin_ba.png differ diff --git a/analysis/java21_fullPut/fig_1024_1_17_copyin_bb.png b/analysis/java21_fullPut/fig_1024_1_17_copyin_bb.png new file mode 100644 index 0000000..542beee Binary files /dev/null and b/analysis/java21_fullPut/fig_1024_1_17_copyin_bb.png differ diff --git a/analysis/java21_fullPut/fig_1024_1_17_copyin_crit.png b/analysis/java21_fullPut/fig_1024_1_17_copyin_crit.png new file mode 100644 index 0000000..7af1f23 Binary files /dev/null and b/analysis/java21_fullPut/fig_1024_1_17_copyin_crit.png differ diff --git a/analysis/java21_fullPut/fig_1024_1_17_copyin_dir.png b/analysis/java21_fullPut/fig_1024_1_17_copyin_dir.png new file mode 100644 index 0000000..6223bee Binary files /dev/null and b/analysis/java21_fullPut/fig_1024_1_17_copyin_dir.png differ diff --git a/analysis/java21_fullPut/fig_1024_1_17_copyin_getelems.png b/analysis/java21_fullPut/fig_1024_1_17_copyin_getelems.png new file mode 100644 index 0000000..9531d9c Binary files /dev/null and b/analysis/java21_fullPut/fig_1024_1_17_copyin_getelems.png differ diff --git a/analysis/java21_fullPut/fig_1024_1_17_copyin_ind.png b/analysis/java21_fullPut/fig_1024_1_17_copyin_ind.png new file mode 100644 index 0000000..96eeca4 Binary files /dev/null and b/analysis/java21_fullPut/fig_1024_1_17_copyin_ind.png differ diff --git a/analysis/java21_fullPut/fig_1024_1_17_copyin_nopoolbig.png b/analysis/java21_fullPut/fig_1024_1_17_copyin_nopoolbig.png new file mode 100644 index 0000000..81f81e4 Binary files /dev/null and b/analysis/java21_fullPut/fig_1024_1_17_copyin_nopoolbig.png differ diff --git a/analysis/java21_fullPut/fig_1024_1_17_copyin_nopoolsmall.png b/analysis/java21_fullPut/fig_1024_1_17_copyin_nopoolsmall.png new file mode 100644 index 0000000..04d6480 Binary files /dev/null and b/analysis/java21_fullPut/fig_1024_1_17_copyin_nopoolsmall.png differ diff --git a/analysis/java21_fullPut/fig_1024_1_17_none_allbig.png b/analysis/java21_fullPut/fig_1024_1_17_none_allbig.png new file mode 100644 index 0000000..83bc52e Binary files /dev/null and b/analysis/java21_fullPut/fig_1024_1_17_none_allbig.png differ diff --git a/analysis/java21_fullPut/fig_1024_1_17_none_allsmall.png b/analysis/java21_fullPut/fig_1024_1_17_none_allsmall.png new file mode 100644 index 0000000..1a89fe4 Binary files /dev/null and b/analysis/java21_fullPut/fig_1024_1_17_none_allsmall.png differ diff --git a/analysis/java21_fullPut/fig_1024_1_17_none_ba.png b/analysis/java21_fullPut/fig_1024_1_17_none_ba.png new file mode 100644 index 0000000..b66f481 Binary files /dev/null and b/analysis/java21_fullPut/fig_1024_1_17_none_ba.png differ diff --git a/analysis/java21_fullPut/fig_1024_1_17_none_bb.png b/analysis/java21_fullPut/fig_1024_1_17_none_bb.png new file mode 100644 index 0000000..f234a5b Binary files /dev/null and b/analysis/java21_fullPut/fig_1024_1_17_none_bb.png differ diff --git a/analysis/java21_fullPut/fig_1024_1_17_none_crit.png b/analysis/java21_fullPut/fig_1024_1_17_none_crit.png new file mode 100644 index 0000000..87ab1f2 Binary files /dev/null and b/analysis/java21_fullPut/fig_1024_1_17_none_crit.png differ diff --git a/analysis/java21_fullPut/fig_1024_1_17_none_dir.png b/analysis/java21_fullPut/fig_1024_1_17_none_dir.png new file mode 100644 index 0000000..046d90e Binary files /dev/null and b/analysis/java21_fullPut/fig_1024_1_17_none_dir.png differ diff --git a/analysis/java21_fullPut/fig_1024_1_17_none_getelems.png b/analysis/java21_fullPut/fig_1024_1_17_none_getelems.png new file mode 100644 index 0000000..a64afc6 Binary files /dev/null and b/analysis/java21_fullPut/fig_1024_1_17_none_getelems.png differ diff --git a/analysis/java21_fullPut/fig_1024_1_17_none_ind.png b/analysis/java21_fullPut/fig_1024_1_17_none_ind.png new file mode 100644 index 0000000..c3b3edf Binary files /dev/null and b/analysis/java21_fullPut/fig_1024_1_17_none_ind.png differ diff --git a/analysis/java21_fullPut/fig_1024_1_17_none_nopoolbig.png b/analysis/java21_fullPut/fig_1024_1_17_none_nopoolbig.png new file mode 100644 index 0000000..1408c28 Binary files /dev/null and b/analysis/java21_fullPut/fig_1024_1_17_none_nopoolbig.png differ diff --git a/analysis/java21_fullPut/fig_1024_1_17_none_nopoolsmall.png b/analysis/java21_fullPut/fig_1024_1_17_none_nopoolsmall.png new file mode 100644 index 0000000..70a52f5 Binary files /dev/null and b/analysis/java21_fullPut/fig_1024_1_17_none_nopoolsmall.png differ diff --git a/analysis/java21_fullPut/jmh_2026-01-07T08:55:40.562035.md b/analysis/java21_fullPut/jmh_2026-01-07T08:55:40.562035.md new file mode 100644 index 0000000..f611ed6 --- /dev/null +++ b/analysis/java21_fullPut/jmh_2026-01-07T08:55:40.562035.md @@ -0,0 +1,50 @@ +## JMH Run +This JMH run was generated on 2026-01-07T08:55:40.562035 +#### Config +The configuration was read from `/home/rklein/jni-benchmarks/jmh_full_put_java21.json` +```json +{ + "benchmark": "PutJNIBenchmark", + "jvmargs": [ + "Xmx4G", + "XX:ErrorFile=./results/hs_err_pid%p.log", + "XX:+HeapDumpOnOutOfMemoryError", + "-enable-preview" + ], + "params": { + "valueSize": [ + 10, + 50, + 512, + 1024, + 4096, + 8192, + 16384, + 32768, + 65536 + ], + "cacheMB": [ + 1 + ], + "checksum": [ + "none", + "copyin" + ] + }, + "options": { + "batchsize": 1, + "warmupiterations": 20, + "warmuptime": "50ms", + "iterations": 50, + "time": "500ms" + }, + "result.path": "./results", + "java.library.path": "target/jni-benchmarks-1.0.1-SNAPSHOT-application/jni-benchmarks-1.0.1-SNAPSHOT/lib", + "jar": "target/jni-benchmarks-1.0.1-SNAPSHOT-benchmarks.nar" +} +``` +#### Command +The java command executed to run the tests +``` +java -Xmx4G -XX:ErrorFile=./results/hs_err_pid%p.log -XX:+HeapDumpOnOutOfMemoryError --enable-preview -Djava.library.path=target/jni-benchmarks-1.0.1-SNAPSHOT-application/jni-benchmarks-1.0.1-SNAPSHOT/lib -jar target/jni-benchmarks-1.0.1-SNAPSHOT-benchmarks.nar PutJNIBenchmark -p valueSize=10,50,512,1024,4096,8192,16384,32768,65536 -p cacheMB=1 -p checksum=none,copyin -bs 1 -wi 20 -w 50ms -i 50 -r 500ms -rff results/jmh_2026-01-07T08:55:40.562035/jmh_2026-01-07T08:55:40.562035.csv +``` diff --git a/analysis/java21_fullPut/system_info.json b/analysis/java21_fullPut/system_info.json new file mode 100644 index 0000000..612aabf --- /dev/null +++ b/analysis/java21_fullPut/system_info.json @@ -0,0 +1,3 @@ +{ + "system_info": "x86_64 - Intel(R) Xeon(R) CPU E5-1650 v3 @ 3.50GHz - 125GB RAM - Ubuntu 24.04.3 LTS - Kernel: 6.14.0-36-generic - openjdk version \"21.0.9\" 2025-10-21" +} \ No newline at end of file diff --git a/analysis/java25_fullGet/Java25FullGet.zip b/analysis/java25_fullGet/Java25FullGet.zip new file mode 100644 index 0000000..9ddc489 Binary files /dev/null and b/analysis/java25_fullGet/Java25FullGet.zip differ diff --git a/analysis/java25_fullGet/fig_1024_1_copyout_allbig.png b/analysis/java25_fullGet/fig_1024_1_copyout_allbig.png new file mode 100644 index 0000000..d0ee612 Binary files /dev/null and b/analysis/java25_fullGet/fig_1024_1_copyout_allbig.png differ diff --git a/analysis/java25_fullGet/fig_1024_1_copyout_allsmall.png b/analysis/java25_fullGet/fig_1024_1_copyout_allsmall.png new file mode 100644 index 0000000..90c6c2a Binary files /dev/null and b/analysis/java25_fullGet/fig_1024_1_copyout_allsmall.png differ diff --git a/analysis/java25_fullGet/fig_1024_1_copyout_ba.png b/analysis/java25_fullGet/fig_1024_1_copyout_ba.png new file mode 100644 index 0000000..7f6ca20 Binary files /dev/null and b/analysis/java25_fullGet/fig_1024_1_copyout_ba.png differ diff --git a/analysis/java25_fullGet/fig_1024_1_copyout_bb.png b/analysis/java25_fullGet/fig_1024_1_copyout_bb.png new file mode 100644 index 0000000..0bd5de5 Binary files /dev/null and b/analysis/java25_fullGet/fig_1024_1_copyout_bb.png differ diff --git a/analysis/java25_fullGet/fig_1024_1_copyout_crit.png b/analysis/java25_fullGet/fig_1024_1_copyout_crit.png new file mode 100644 index 0000000..565660f Binary files /dev/null and b/analysis/java25_fullGet/fig_1024_1_copyout_crit.png differ diff --git a/analysis/java25_fullGet/fig_1024_1_copyout_dir.png b/analysis/java25_fullGet/fig_1024_1_copyout_dir.png new file mode 100644 index 0000000..39751ea Binary files /dev/null and b/analysis/java25_fullGet/fig_1024_1_copyout_dir.png differ diff --git a/analysis/java25_fullGet/fig_1024_1_copyout_getelems.png b/analysis/java25_fullGet/fig_1024_1_copyout_getelems.png new file mode 100644 index 0000000..b2f7fc9 Binary files /dev/null and b/analysis/java25_fullGet/fig_1024_1_copyout_getelems.png differ diff --git a/analysis/java25_fullGet/fig_1024_1_copyout_ind.png b/analysis/java25_fullGet/fig_1024_1_copyout_ind.png new file mode 100644 index 0000000..6a79b99 Binary files /dev/null and b/analysis/java25_fullGet/fig_1024_1_copyout_ind.png differ diff --git a/analysis/java25_fullGet/fig_1024_1_copyout_nopoolbig.png b/analysis/java25_fullGet/fig_1024_1_copyout_nopoolbig.png new file mode 100644 index 0000000..96b5bff Binary files /dev/null and b/analysis/java25_fullGet/fig_1024_1_copyout_nopoolbig.png differ diff --git a/analysis/java25_fullGet/fig_1024_1_copyout_nopoolsmall.png b/analysis/java25_fullGet/fig_1024_1_copyout_nopoolsmall.png new file mode 100644 index 0000000..57e7587 Binary files /dev/null and b/analysis/java25_fullGet/fig_1024_1_copyout_nopoolsmall.png differ diff --git a/analysis/java25_fullGet/fig_1024_1_copyout_setreg.png b/analysis/java25_fullGet/fig_1024_1_copyout_setreg.png new file mode 100644 index 0000000..46fc56f Binary files /dev/null and b/analysis/java25_fullGet/fig_1024_1_copyout_setreg.png differ diff --git a/analysis/java25_fullGet/fig_1024_1_none_allbig.png b/analysis/java25_fullGet/fig_1024_1_none_allbig.png new file mode 100644 index 0000000..9b8ac12 Binary files /dev/null and b/analysis/java25_fullGet/fig_1024_1_none_allbig.png differ diff --git a/analysis/java25_fullGet/fig_1024_1_none_allsmall.png b/analysis/java25_fullGet/fig_1024_1_none_allsmall.png new file mode 100644 index 0000000..a8266f6 Binary files /dev/null and b/analysis/java25_fullGet/fig_1024_1_none_allsmall.png differ diff --git a/analysis/java25_fullGet/fig_1024_1_none_ba.png b/analysis/java25_fullGet/fig_1024_1_none_ba.png new file mode 100644 index 0000000..4d5669d Binary files /dev/null and b/analysis/java25_fullGet/fig_1024_1_none_ba.png differ diff --git a/analysis/java25_fullGet/fig_1024_1_none_bb.png b/analysis/java25_fullGet/fig_1024_1_none_bb.png new file mode 100644 index 0000000..e03260d Binary files /dev/null and b/analysis/java25_fullGet/fig_1024_1_none_bb.png differ diff --git a/analysis/java25_fullGet/fig_1024_1_none_crit.png b/analysis/java25_fullGet/fig_1024_1_none_crit.png new file mode 100644 index 0000000..d43a17e Binary files /dev/null and b/analysis/java25_fullGet/fig_1024_1_none_crit.png differ diff --git a/analysis/java25_fullGet/fig_1024_1_none_dir.png b/analysis/java25_fullGet/fig_1024_1_none_dir.png new file mode 100644 index 0000000..0c0280f Binary files /dev/null and b/analysis/java25_fullGet/fig_1024_1_none_dir.png differ diff --git a/analysis/java25_fullGet/fig_1024_1_none_getelems.png b/analysis/java25_fullGet/fig_1024_1_none_getelems.png new file mode 100644 index 0000000..f11ac93 Binary files /dev/null and b/analysis/java25_fullGet/fig_1024_1_none_getelems.png differ diff --git a/analysis/java25_fullGet/fig_1024_1_none_ind.png b/analysis/java25_fullGet/fig_1024_1_none_ind.png new file mode 100644 index 0000000..e82559a Binary files /dev/null and b/analysis/java25_fullGet/fig_1024_1_none_ind.png differ diff --git a/analysis/java25_fullGet/fig_1024_1_none_nopoolbig.png b/analysis/java25_fullGet/fig_1024_1_none_nopoolbig.png new file mode 100644 index 0000000..6b36baf Binary files /dev/null and b/analysis/java25_fullGet/fig_1024_1_none_nopoolbig.png differ diff --git a/analysis/java25_fullGet/fig_1024_1_none_nopoolsmall.png b/analysis/java25_fullGet/fig_1024_1_none_nopoolsmall.png new file mode 100644 index 0000000..0c2a5ee Binary files /dev/null and b/analysis/java25_fullGet/fig_1024_1_none_nopoolsmall.png differ diff --git a/analysis/java25_fullGet/fig_1024_1_none_setreg.png b/analysis/java25_fullGet/fig_1024_1_none_setreg.png new file mode 100644 index 0000000..56063c2 Binary files /dev/null and b/analysis/java25_fullGet/fig_1024_1_none_setreg.png differ diff --git a/analysis/java25_fullGet/jmh_2026-01-07T19:32:11.225497.md b/analysis/java25_fullGet/jmh_2026-01-07T19:32:11.225497.md new file mode 100644 index 0000000..c6e83aa --- /dev/null +++ b/analysis/java25_fullGet/jmh_2026-01-07T19:32:11.225497.md @@ -0,0 +1,49 @@ +## JMH Run +This JMH run was generated on 2026-01-07T19:32:11.225497 +#### Config +The configuration was read from `/home/rklein/jni-benchmarks/jmh_full_get.json` +```json +{ + "benchmark": "GetJNIBenchmark", + "jvmargs": [ + "Xmx4G", + "XX:ErrorFile=./results/hs_err_pid%p.log", + "XX:+HeapDumpOnOutOfMemoryError" + ], + "params": { + "valueSize": [ + 10, + 50, + 512, + 1024, + 4096, + 8192, + 16384, + 32768, + 65536 + ], + "cacheMB": [ + 1 + ], + "checksum": [ + "none", + "copyout" + ] + }, + "options": { + "batchsize": 1, + "warmupiterations": 20, + "warmuptime": "50ms", + "iterations": 50, + "time": "500ms" + }, + "result.path": "./results", + "java.library.path": "target/jni-benchmarks-1.0.1-SNAPSHOT-application/jni-benchmarks-1.0.1-SNAPSHOT/lib", + "jar": "target/jni-benchmarks-1.0.1-SNAPSHOT-benchmarks.nar" +} +``` +#### Command +The java command executed to run the tests +``` +java -Xmx4G -XX:ErrorFile=./results/hs_err_pid%p.log -XX:+HeapDumpOnOutOfMemoryError -Djava.library.path=target/jni-benchmarks-1.0.1-SNAPSHOT-application/jni-benchmarks-1.0.1-SNAPSHOT/lib -jar target/jni-benchmarks-1.0.1-SNAPSHOT-benchmarks.nar GetJNIBenchmark -p valueSize=10,50,512,1024,4096,8192,16384,32768,65536 -p cacheMB=1 -p checksum=none,copyout -bs 1 -wi 20 -w 50ms -i 50 -r 500ms -rff results/jmh_2026-01-07T19:32:11.225497/jmh_2026-01-07T19:32:11.225497.csv +``` diff --git a/analysis/java25_fullGet/system_info.json b/analysis/java25_fullGet/system_info.json new file mode 100644 index 0000000..d9f13ef --- /dev/null +++ b/analysis/java25_fullGet/system_info.json @@ -0,0 +1,3 @@ +{ + "system_info": "x86_64 - Intel(R) Xeon(R) CPU E5-1650 v3 @ 3.50GHz - 125GB RAM - Ubuntu 24.04.3 LTS - Kernel: 6.14.0-36-generic - openjdk version \"25.0.1\" 2025-10-21" +} \ No newline at end of file diff --git a/analysis/java25_fullPut/Java25FullPut.zip b/analysis/java25_fullPut/Java25FullPut.zip new file mode 100644 index 0000000..9d0fdd6 Binary files /dev/null and b/analysis/java25_fullPut/Java25FullPut.zip differ diff --git a/analysis/java25_fullPut/Thumbs.db b/analysis/java25_fullPut/Thumbs.db new file mode 100644 index 0000000..55f88e1 Binary files /dev/null and b/analysis/java25_fullPut/Thumbs.db differ diff --git a/analysis/java25_fullPut/fig_1024_1_17_copyin_allbig.png b/analysis/java25_fullPut/fig_1024_1_17_copyin_allbig.png new file mode 100644 index 0000000..412ac3d Binary files /dev/null and b/analysis/java25_fullPut/fig_1024_1_17_copyin_allbig.png differ diff --git a/analysis/java25_fullPut/fig_1024_1_17_copyin_allsmall.png b/analysis/java25_fullPut/fig_1024_1_17_copyin_allsmall.png new file mode 100644 index 0000000..a6d0c93 Binary files /dev/null and b/analysis/java25_fullPut/fig_1024_1_17_copyin_allsmall.png differ diff --git a/analysis/java25_fullPut/fig_1024_1_17_copyin_ba.png b/analysis/java25_fullPut/fig_1024_1_17_copyin_ba.png new file mode 100644 index 0000000..946d465 Binary files /dev/null and b/analysis/java25_fullPut/fig_1024_1_17_copyin_ba.png differ diff --git a/analysis/java25_fullPut/fig_1024_1_17_copyin_bb.png b/analysis/java25_fullPut/fig_1024_1_17_copyin_bb.png new file mode 100644 index 0000000..7706a6e Binary files /dev/null and b/analysis/java25_fullPut/fig_1024_1_17_copyin_bb.png differ diff --git a/analysis/java25_fullPut/fig_1024_1_17_copyin_crit.png b/analysis/java25_fullPut/fig_1024_1_17_copyin_crit.png new file mode 100644 index 0000000..dc75aa7 Binary files /dev/null and b/analysis/java25_fullPut/fig_1024_1_17_copyin_crit.png differ diff --git a/analysis/java25_fullPut/fig_1024_1_17_copyin_dir.png b/analysis/java25_fullPut/fig_1024_1_17_copyin_dir.png new file mode 100644 index 0000000..5ded7a3 Binary files /dev/null and b/analysis/java25_fullPut/fig_1024_1_17_copyin_dir.png differ diff --git a/analysis/java25_fullPut/fig_1024_1_17_copyin_getelems.png b/analysis/java25_fullPut/fig_1024_1_17_copyin_getelems.png new file mode 100644 index 0000000..ce37c69 Binary files /dev/null and b/analysis/java25_fullPut/fig_1024_1_17_copyin_getelems.png differ diff --git a/analysis/java25_fullPut/fig_1024_1_17_copyin_ind.png b/analysis/java25_fullPut/fig_1024_1_17_copyin_ind.png new file mode 100644 index 0000000..8f03cc6 Binary files /dev/null and b/analysis/java25_fullPut/fig_1024_1_17_copyin_ind.png differ diff --git a/analysis/java25_fullPut/fig_1024_1_17_copyin_nopoolbig.png b/analysis/java25_fullPut/fig_1024_1_17_copyin_nopoolbig.png new file mode 100644 index 0000000..fc35877 Binary files /dev/null and b/analysis/java25_fullPut/fig_1024_1_17_copyin_nopoolbig.png differ diff --git a/analysis/java25_fullPut/fig_1024_1_17_copyin_nopoolsmall.png b/analysis/java25_fullPut/fig_1024_1_17_copyin_nopoolsmall.png new file mode 100644 index 0000000..00c52e5 Binary files /dev/null and b/analysis/java25_fullPut/fig_1024_1_17_copyin_nopoolsmall.png differ diff --git a/analysis/java25_fullPut/fig_1024_1_17_none_allbig.png b/analysis/java25_fullPut/fig_1024_1_17_none_allbig.png new file mode 100644 index 0000000..fa04ae8 Binary files /dev/null and b/analysis/java25_fullPut/fig_1024_1_17_none_allbig.png differ diff --git a/analysis/java25_fullPut/fig_1024_1_17_none_allsmall.png b/analysis/java25_fullPut/fig_1024_1_17_none_allsmall.png new file mode 100644 index 0000000..c531916 Binary files /dev/null and b/analysis/java25_fullPut/fig_1024_1_17_none_allsmall.png differ diff --git a/analysis/java25_fullPut/fig_1024_1_17_none_ba.png b/analysis/java25_fullPut/fig_1024_1_17_none_ba.png new file mode 100644 index 0000000..2524210 Binary files /dev/null and b/analysis/java25_fullPut/fig_1024_1_17_none_ba.png differ diff --git a/analysis/java25_fullPut/fig_1024_1_17_none_bb.png b/analysis/java25_fullPut/fig_1024_1_17_none_bb.png new file mode 100644 index 0000000..137f324 Binary files /dev/null and b/analysis/java25_fullPut/fig_1024_1_17_none_bb.png differ diff --git a/analysis/java25_fullPut/fig_1024_1_17_none_crit.png b/analysis/java25_fullPut/fig_1024_1_17_none_crit.png new file mode 100644 index 0000000..ecdd043 Binary files /dev/null and b/analysis/java25_fullPut/fig_1024_1_17_none_crit.png differ diff --git a/analysis/java25_fullPut/fig_1024_1_17_none_dir.png b/analysis/java25_fullPut/fig_1024_1_17_none_dir.png new file mode 100644 index 0000000..8a8b164 Binary files /dev/null and b/analysis/java25_fullPut/fig_1024_1_17_none_dir.png differ diff --git a/analysis/java25_fullPut/fig_1024_1_17_none_getelems.png b/analysis/java25_fullPut/fig_1024_1_17_none_getelems.png new file mode 100644 index 0000000..ea33b7a Binary files /dev/null and b/analysis/java25_fullPut/fig_1024_1_17_none_getelems.png differ diff --git a/analysis/java25_fullPut/fig_1024_1_17_none_ind.png b/analysis/java25_fullPut/fig_1024_1_17_none_ind.png new file mode 100644 index 0000000..999df34 Binary files /dev/null and b/analysis/java25_fullPut/fig_1024_1_17_none_ind.png differ diff --git a/analysis/java25_fullPut/fig_1024_1_17_none_nopoolbig.png b/analysis/java25_fullPut/fig_1024_1_17_none_nopoolbig.png new file mode 100644 index 0000000..8c90482 Binary files /dev/null and b/analysis/java25_fullPut/fig_1024_1_17_none_nopoolbig.png differ diff --git a/analysis/java25_fullPut/fig_1024_1_17_none_nopoolsmall.png b/analysis/java25_fullPut/fig_1024_1_17_none_nopoolsmall.png new file mode 100644 index 0000000..47f0caf Binary files /dev/null and b/analysis/java25_fullPut/fig_1024_1_17_none_nopoolsmall.png differ diff --git a/analysis/java25_fullPut/jmh_2026-01-08T10:14:38.860366.md b/analysis/java25_fullPut/jmh_2026-01-08T10:14:38.860366.md new file mode 100644 index 0000000..07a5d5e --- /dev/null +++ b/analysis/java25_fullPut/jmh_2026-01-08T10:14:38.860366.md @@ -0,0 +1,49 @@ +## JMH Run +This JMH run was generated on 2026-01-08T10:14:38.860366 +#### Config +The configuration was read from `/home/rklein/jni-benchmarks/jmh_full_put.json` +```json +{ + "benchmark": "PutJNIBenchmark", + "jvmargs": [ + "Xmx4G", + "XX:ErrorFile=./results/hs_err_pid%p.log", + "XX:+HeapDumpOnOutOfMemoryError" + ], + "params": { + "valueSize": [ + 10, + 50, + 512, + 1024, + 4096, + 8192, + 16384, + 32768, + 65536 + ], + "cacheMB": [ + 1 + ], + "checksum": [ + "none", + "copyin" + ] + }, + "options": { + "batchsize": 1, + "warmupiterations": 20, + "warmuptime": "50ms", + "iterations": 50, + "time": "500ms" + }, + "result.path": "./results", + "java.library.path": "target/jni-benchmarks-1.0.1-SNAPSHOT-application/jni-benchmarks-1.0.1-SNAPSHOT/lib", + "jar": "target/jni-benchmarks-1.0.1-SNAPSHOT-benchmarks.nar" +} +``` +#### Command +The java command executed to run the tests +``` +java -Xmx4G -XX:ErrorFile=./results/hs_err_pid%p.log -XX:+HeapDumpOnOutOfMemoryError -Djava.library.path=target/jni-benchmarks-1.0.1-SNAPSHOT-application/jni-benchmarks-1.0.1-SNAPSHOT/lib -jar target/jni-benchmarks-1.0.1-SNAPSHOT-benchmarks.nar PutJNIBenchmark -p valueSize=10,50,512,1024,4096,8192,16384,32768,65536 -p cacheMB=1 -p checksum=none,copyin -bs 1 -wi 20 -w 50ms -i 50 -r 500ms -rff results/jmh_2026-01-08T10:14:38.860366/jmh_2026-01-08T10:14:38.860366.csv +``` diff --git a/analysis/java25_fullPut/system_info.json b/analysis/java25_fullPut/system_info.json new file mode 100644 index 0000000..d9f13ef --- /dev/null +++ b/analysis/java25_fullPut/system_info.json @@ -0,0 +1,3 @@ +{ + "system_info": "x86_64 - Intel(R) Xeon(R) CPU E5-1650 v3 @ 3.50GHz - 125GB RAM - Ubuntu 24.04.3 LTS - Kernel: 6.14.0-36-generic - openjdk version \"25.0.1\" 2025-10-21" +} \ No newline at end of file diff --git a/analysis/jmh_2026-01-18T10:08:09.888104/fig__all.png b/analysis/jmh_2026-01-18T10:08:09.888104/fig__all.png new file mode 100644 index 0000000..01c810f Binary files /dev/null and b/analysis/jmh_2026-01-18T10:08:09.888104/fig__all.png differ diff --git a/analysis/jmh_2026-01-18T10:08:09.888104/jmh_2026-01-18T10:08:09.888104.md b/analysis/jmh_2026-01-18T10:08:09.888104/jmh_2026-01-18T10:08:09.888104.md new file mode 100644 index 0000000..ced0fcd --- /dev/null +++ b/analysis/jmh_2026-01-18T10:08:09.888104/jmh_2026-01-18T10:08:09.888104.md @@ -0,0 +1,49 @@ +## JMH Run +This JMH run was generated on 2026-01-18T10:08:09.888104 +#### Config +The configuration was read from `/home/rklein/jni-benchmarks/jmh_full_array_to_native.json` +```json +{ + "benchmark": "ByteArrayToNativeBenchmark", + "jvmargs": [ + "Xmx4G", + "XX:ErrorFile=./results/hs_err_pid%p.log", + "XX:+HeapDumpOnOutOfMemoryError" + ], + "params": { + "valueSize": [ + 10, + 50, + 512, + 1024, + 4096, + 8192, + 16384, + 32768, + 65536 + ], + "cacheMB": [ + 1 + ], + "checksum": [ + "none", + "copyout" + ] + }, + "options": { + "batchsize": 1, + "warmupiterations": 20, + "warmuptime": "50ms", + "iterations": 50, + "time": "500ms" + }, + "result.path": "./results", + "java.library.path": "target/jni-benchmarks-1.0.1-SNAPSHOT-application/jni-benchmarks-1.0.1-SNAPSHOT/lib", + "jar": "target/jni-benchmarks-1.0.1-SNAPSHOT-benchmarks.nar" +} +``` +#### Command +The java command executed to run the tests +``` +java -Xmx4G -XX:ErrorFile=./results/hs_err_pid%p.log -XX:+HeapDumpOnOutOfMemoryError -Djava.library.path=target/jni-benchmarks-1.0.1-SNAPSHOT-application/jni-benchmarks-1.0.1-SNAPSHOT/lib -jar target/jni-benchmarks-1.0.1-SNAPSHOT-benchmarks.nar ByteArrayToNativeBenchmark -p valueSize=10,50,512,1024,4096,8192,16384,32768,65536 -p cacheMB=1 -p checksum=none,copyout -bs 1 -wi 20 -w 50ms -i 50 -r 500ms -rff results/jmh_2026-01-18T10:08:09.888104/jmh_2026-01-18T10:08:09.888104.csv +``` diff --git a/analysis/jmh_2026-01-18T10:08:09.888104/system_info.json b/analysis/jmh_2026-01-18T10:08:09.888104/system_info.json new file mode 100644 index 0000000..2d9fcf0 --- /dev/null +++ b/analysis/jmh_2026-01-18T10:08:09.888104/system_info.json @@ -0,0 +1,3 @@ +{ + "system_info": "x86_64 - Intel(R) Xeon(R) CPU E5-1650 v3 @ 3.50GHz - 125GB RAM - Ubuntu 24.04.3 LTS - Kernel: 6.14.0-36-generic - openjdk version \"1.8.0_472\"" +} \ No newline at end of file diff --git a/analysis/revisedMemorySegmentUse_Java25/fig_1024_1_copyout_allbig.png b/analysis/revisedMemorySegmentUse_Java25/fig_1024_1_copyout_allbig.png new file mode 100644 index 0000000..1d3028d Binary files /dev/null and b/analysis/revisedMemorySegmentUse_Java25/fig_1024_1_copyout_allbig.png differ diff --git a/analysis/revisedMemorySegmentUse_Java25/fig_1024_1_copyout_allsmall.png b/analysis/revisedMemorySegmentUse_Java25/fig_1024_1_copyout_allsmall.png new file mode 100644 index 0000000..55326cf Binary files /dev/null and b/analysis/revisedMemorySegmentUse_Java25/fig_1024_1_copyout_allsmall.png differ diff --git a/analysis/revisedMemorySegmentUse_Java25/fig_1024_1_copyout_ba.png b/analysis/revisedMemorySegmentUse_Java25/fig_1024_1_copyout_ba.png new file mode 100644 index 0000000..d8a9ce1 Binary files /dev/null and b/analysis/revisedMemorySegmentUse_Java25/fig_1024_1_copyout_ba.png differ diff --git a/analysis/revisedMemorySegmentUse_Java25/fig_1024_1_copyout_bb.png b/analysis/revisedMemorySegmentUse_Java25/fig_1024_1_copyout_bb.png new file mode 100644 index 0000000..e44d085 Binary files /dev/null and b/analysis/revisedMemorySegmentUse_Java25/fig_1024_1_copyout_bb.png differ diff --git a/analysis/revisedMemorySegmentUse_Java25/fig_1024_1_copyout_crit.png b/analysis/revisedMemorySegmentUse_Java25/fig_1024_1_copyout_crit.png new file mode 100644 index 0000000..9006154 Binary files /dev/null and b/analysis/revisedMemorySegmentUse_Java25/fig_1024_1_copyout_crit.png differ diff --git a/analysis/revisedMemorySegmentUse_Java25/fig_1024_1_copyout_dir.png b/analysis/revisedMemorySegmentUse_Java25/fig_1024_1_copyout_dir.png new file mode 100644 index 0000000..82ecc94 Binary files /dev/null and b/analysis/revisedMemorySegmentUse_Java25/fig_1024_1_copyout_dir.png differ diff --git a/analysis/revisedMemorySegmentUse_Java25/fig_1024_1_copyout_getelems.png b/analysis/revisedMemorySegmentUse_Java25/fig_1024_1_copyout_getelems.png new file mode 100644 index 0000000..f99c927 Binary files /dev/null and b/analysis/revisedMemorySegmentUse_Java25/fig_1024_1_copyout_getelems.png differ diff --git a/analysis/revisedMemorySegmentUse_Java25/fig_1024_1_copyout_ind.png b/analysis/revisedMemorySegmentUse_Java25/fig_1024_1_copyout_ind.png new file mode 100644 index 0000000..fa46464 Binary files /dev/null and b/analysis/revisedMemorySegmentUse_Java25/fig_1024_1_copyout_ind.png differ diff --git a/analysis/revisedMemorySegmentUse_Java25/fig_1024_1_copyout_nopoolbig.png b/analysis/revisedMemorySegmentUse_Java25/fig_1024_1_copyout_nopoolbig.png new file mode 100644 index 0000000..bb8a495 Binary files /dev/null and b/analysis/revisedMemorySegmentUse_Java25/fig_1024_1_copyout_nopoolbig.png differ diff --git a/analysis/revisedMemorySegmentUse_Java25/fig_1024_1_copyout_nopoolsmall.png b/analysis/revisedMemorySegmentUse_Java25/fig_1024_1_copyout_nopoolsmall.png new file mode 100644 index 0000000..39de17c Binary files /dev/null and b/analysis/revisedMemorySegmentUse_Java25/fig_1024_1_copyout_nopoolsmall.png differ diff --git a/analysis/revisedMemorySegmentUse_Java25/fig_1024_1_copyout_setreg.png b/analysis/revisedMemorySegmentUse_Java25/fig_1024_1_copyout_setreg.png new file mode 100644 index 0000000..9f876a5 Binary files /dev/null and b/analysis/revisedMemorySegmentUse_Java25/fig_1024_1_copyout_setreg.png differ diff --git a/analysis/revisedMemorySegmentUse_Java25/fig_1024_1_none_allbig.png b/analysis/revisedMemorySegmentUse_Java25/fig_1024_1_none_allbig.png new file mode 100644 index 0000000..09e85e1 Binary files /dev/null and b/analysis/revisedMemorySegmentUse_Java25/fig_1024_1_none_allbig.png differ diff --git a/analysis/revisedMemorySegmentUse_Java25/fig_1024_1_none_allsmall.png b/analysis/revisedMemorySegmentUse_Java25/fig_1024_1_none_allsmall.png new file mode 100644 index 0000000..b63c25b Binary files /dev/null and b/analysis/revisedMemorySegmentUse_Java25/fig_1024_1_none_allsmall.png differ diff --git a/analysis/revisedMemorySegmentUse_Java25/fig_1024_1_none_ba.png b/analysis/revisedMemorySegmentUse_Java25/fig_1024_1_none_ba.png new file mode 100644 index 0000000..852d91f Binary files /dev/null and b/analysis/revisedMemorySegmentUse_Java25/fig_1024_1_none_ba.png differ diff --git a/analysis/revisedMemorySegmentUse_Java25/fig_1024_1_none_bb.png b/analysis/revisedMemorySegmentUse_Java25/fig_1024_1_none_bb.png new file mode 100644 index 0000000..9d940ba Binary files /dev/null and b/analysis/revisedMemorySegmentUse_Java25/fig_1024_1_none_bb.png differ diff --git a/analysis/revisedMemorySegmentUse_Java25/fig_1024_1_none_crit.png b/analysis/revisedMemorySegmentUse_Java25/fig_1024_1_none_crit.png new file mode 100644 index 0000000..c37b45f Binary files /dev/null and b/analysis/revisedMemorySegmentUse_Java25/fig_1024_1_none_crit.png differ diff --git a/analysis/revisedMemorySegmentUse_Java25/fig_1024_1_none_dir.png b/analysis/revisedMemorySegmentUse_Java25/fig_1024_1_none_dir.png new file mode 100644 index 0000000..ba0ae2a Binary files /dev/null and b/analysis/revisedMemorySegmentUse_Java25/fig_1024_1_none_dir.png differ diff --git a/analysis/revisedMemorySegmentUse_Java25/fig_1024_1_none_getelems.png b/analysis/revisedMemorySegmentUse_Java25/fig_1024_1_none_getelems.png new file mode 100644 index 0000000..54774cf Binary files /dev/null and b/analysis/revisedMemorySegmentUse_Java25/fig_1024_1_none_getelems.png differ diff --git a/analysis/revisedMemorySegmentUse_Java25/fig_1024_1_none_ind.png b/analysis/revisedMemorySegmentUse_Java25/fig_1024_1_none_ind.png new file mode 100644 index 0000000..d78da2b Binary files /dev/null and b/analysis/revisedMemorySegmentUse_Java25/fig_1024_1_none_ind.png differ diff --git a/analysis/revisedMemorySegmentUse_Java25/fig_1024_1_none_nopoolbig.png b/analysis/revisedMemorySegmentUse_Java25/fig_1024_1_none_nopoolbig.png new file mode 100644 index 0000000..4d23141 Binary files /dev/null and b/analysis/revisedMemorySegmentUse_Java25/fig_1024_1_none_nopoolbig.png differ diff --git a/analysis/revisedMemorySegmentUse_Java25/fig_1024_1_none_nopoolsmall.png b/analysis/revisedMemorySegmentUse_Java25/fig_1024_1_none_nopoolsmall.png new file mode 100644 index 0000000..0afc1eb Binary files /dev/null and b/analysis/revisedMemorySegmentUse_Java25/fig_1024_1_none_nopoolsmall.png differ diff --git a/analysis/revisedMemorySegmentUse_Java25/fig_1024_1_none_setreg.png b/analysis/revisedMemorySegmentUse_Java25/fig_1024_1_none_setreg.png new file mode 100644 index 0000000..45b3d07 Binary files /dev/null and b/analysis/revisedMemorySegmentUse_Java25/fig_1024_1_none_setreg.png differ diff --git a/analysis/revisedMemorySegmentUse_Java25/jmh_2026-01-29T12:11:26.472664.md b/analysis/revisedMemorySegmentUse_Java25/jmh_2026-01-29T12:11:26.472664.md new file mode 100644 index 0000000..9fd8fa8 --- /dev/null +++ b/analysis/revisedMemorySegmentUse_Java25/jmh_2026-01-29T12:11:26.472664.md @@ -0,0 +1,44 @@ +## JMH Run +This JMH run was generated on 2026-01-29T12:11:26.472664 +#### Config +The configuration was read from `/home/rklein/jni-benchmarks/jmh_tiny_get_java25.json` +```json +{ + "benchmark": "GetJNIBenchmarkJava25", + "jvmargs": [ + "Xmx4G", + "XX:ErrorFile=./results/hs_err_pid%p.log", + "XX:+HeapDumpOnOutOfMemoryError" + ], + "params": { + "valueSize": [ + 50, + 1024, + 4096, + 16384 + ], + "cacheMB": [ + 1 + ], + "checksum": [ + "none", + "copyout" + ] + }, + "options": { + "batchsize": 1, + "warmupiterations": 5, + "warmuptime": "10ms", + "iterations": 5, + "time": "50ms" + }, + "result.path": "./results", + "java.library.path": "target/jni-benchmarks-1.0.1-SNAPSHOT-application/jni-benchmarks-1.0.1-SNAPSHOT/lib", + "jar": "target/jni-benchmarks-1.0.1-SNAPSHOT-benchmarks.nar" +} +``` +#### Command +The java command executed to run the tests +``` +java -Xmx4G -XX:ErrorFile=./results/hs_err_pid%p.log -XX:+HeapDumpOnOutOfMemoryError -Djava.library.path=target/jni-benchmarks-1.0.1-SNAPSHOT-application/jni-benchmarks-1.0.1-SNAPSHOT/lib -jar target/jni-benchmarks-1.0.1-SNAPSHOT-benchmarks.nar GetJNIBenchmarkJava25 -p valueSize=50,1024,4096,16384 -p cacheMB=1 -p checksum=none,copyout -bs 1 -wi 5 -w 10ms -i 5 -r 50ms -rff results/jmh_2026-01-29T12:11:26.472664/jmh_2026-01-29T12:11:26.472664.csv +``` diff --git a/analysis/revisedMemorySegmentUse_Java25/system_info.json b/analysis/revisedMemorySegmentUse_Java25/system_info.json new file mode 100644 index 0000000..d1a4fac --- /dev/null +++ b/analysis/revisedMemorySegmentUse_Java25/system_info.json @@ -0,0 +1,3 @@ +{ + "system_info": "x86_64 - Intel(R) Xeon(R) CPU E5-1650 v3 @ 3.50GHz - 125GB RAM - Ubuntu 24.04.3 LTS - Kernel: 6.14.0-37-generic - openjdk version \"25.0.1\" 2025-10-21" +} \ No newline at end of file diff --git a/combined/FullPut.zip b/combined/FullPut.zip new file mode 100644 index 0000000..a148b14 Binary files /dev/null and b/combined/FullPut.zip differ diff --git a/combined/FullPut/Archiv.zip b/combined/FullPut/Archiv.zip new file mode 100644 index 0000000..5736739 Binary files /dev/null and b/combined/FullPut/Archiv.zip differ diff --git a/combined/FullPut/fig_1024_1_17_copyin_allbig.png b/combined/FullPut/fig_1024_1_17_copyin_allbig.png new file mode 100644 index 0000000..c2d91c9 Binary files /dev/null and b/combined/FullPut/fig_1024_1_17_copyin_allbig.png differ diff --git a/combined/FullPut/fig_1024_1_17_copyin_allsmall.png b/combined/FullPut/fig_1024_1_17_copyin_allsmall.png new file mode 100644 index 0000000..0804507 Binary files /dev/null and b/combined/FullPut/fig_1024_1_17_copyin_allsmall.png differ diff --git a/combined/FullPut/fig_1024_1_17_copyin_ba.png b/combined/FullPut/fig_1024_1_17_copyin_ba.png new file mode 100644 index 0000000..6229918 Binary files /dev/null and b/combined/FullPut/fig_1024_1_17_copyin_ba.png differ diff --git a/combined/FullPut/fig_1024_1_17_copyin_bb.png b/combined/FullPut/fig_1024_1_17_copyin_bb.png new file mode 100644 index 0000000..2e89bac Binary files /dev/null and b/combined/FullPut/fig_1024_1_17_copyin_bb.png differ diff --git a/combined/FullPut/fig_1024_1_17_copyin_crit.png b/combined/FullPut/fig_1024_1_17_copyin_crit.png new file mode 100644 index 0000000..5071e3f Binary files /dev/null and b/combined/FullPut/fig_1024_1_17_copyin_crit.png differ diff --git a/combined/FullPut/fig_1024_1_17_copyin_dir.png b/combined/FullPut/fig_1024_1_17_copyin_dir.png new file mode 100644 index 0000000..9d00324 Binary files /dev/null and b/combined/FullPut/fig_1024_1_17_copyin_dir.png differ diff --git a/combined/FullPut/fig_1024_1_17_copyin_getelems.png b/combined/FullPut/fig_1024_1_17_copyin_getelems.png new file mode 100644 index 0000000..e969e9f Binary files /dev/null and b/combined/FullPut/fig_1024_1_17_copyin_getelems.png differ diff --git a/combined/FullPut/fig_1024_1_17_copyin_ind.png b/combined/FullPut/fig_1024_1_17_copyin_ind.png new file mode 100644 index 0000000..7f5973b Binary files /dev/null and b/combined/FullPut/fig_1024_1_17_copyin_ind.png differ diff --git a/combined/FullPut/fig_1024_1_17_copyin_nopoolbig.png b/combined/FullPut/fig_1024_1_17_copyin_nopoolbig.png new file mode 100644 index 0000000..deabca4 Binary files /dev/null and b/combined/FullPut/fig_1024_1_17_copyin_nopoolbig.png differ diff --git a/combined/FullPut/fig_1024_1_17_copyin_nopoolsmall.png b/combined/FullPut/fig_1024_1_17_copyin_nopoolsmall.png new file mode 100644 index 0000000..7567b63 Binary files /dev/null and b/combined/FullPut/fig_1024_1_17_copyin_nopoolsmall.png differ diff --git a/combined/FullPut/fig_1024_1_17_none_allbig.png b/combined/FullPut/fig_1024_1_17_none_allbig.png new file mode 100644 index 0000000..2ba0b3a Binary files /dev/null and b/combined/FullPut/fig_1024_1_17_none_allbig.png differ diff --git a/combined/FullPut/fig_1024_1_17_none_allsmall.png b/combined/FullPut/fig_1024_1_17_none_allsmall.png new file mode 100644 index 0000000..4aefb6e Binary files /dev/null and b/combined/FullPut/fig_1024_1_17_none_allsmall.png differ diff --git a/combined/FullPut/fig_1024_1_17_none_ba.png b/combined/FullPut/fig_1024_1_17_none_ba.png new file mode 100644 index 0000000..ab608ef Binary files /dev/null and b/combined/FullPut/fig_1024_1_17_none_ba.png differ diff --git a/combined/FullPut/fig_1024_1_17_none_bb.png b/combined/FullPut/fig_1024_1_17_none_bb.png new file mode 100644 index 0000000..eb3962a Binary files /dev/null and b/combined/FullPut/fig_1024_1_17_none_bb.png differ diff --git a/combined/FullPut/fig_1024_1_17_none_crit.png b/combined/FullPut/fig_1024_1_17_none_crit.png new file mode 100644 index 0000000..a4c8fe8 Binary files /dev/null and b/combined/FullPut/fig_1024_1_17_none_crit.png differ diff --git a/combined/FullPut/fig_1024_1_17_none_dir.png b/combined/FullPut/fig_1024_1_17_none_dir.png new file mode 100644 index 0000000..69d992f Binary files /dev/null and b/combined/FullPut/fig_1024_1_17_none_dir.png differ diff --git a/combined/FullPut/fig_1024_1_17_none_getelems.png b/combined/FullPut/fig_1024_1_17_none_getelems.png new file mode 100644 index 0000000..dfe7bf9 Binary files /dev/null and b/combined/FullPut/fig_1024_1_17_none_getelems.png differ diff --git a/combined/FullPut/fig_1024_1_17_none_ind.png b/combined/FullPut/fig_1024_1_17_none_ind.png new file mode 100644 index 0000000..53c3b9c Binary files /dev/null and b/combined/FullPut/fig_1024_1_17_none_ind.png differ diff --git a/combined/FullPut/fig_1024_1_17_none_nopoolbig.png b/combined/FullPut/fig_1024_1_17_none_nopoolbig.png new file mode 100644 index 0000000..29f3c30 Binary files /dev/null and b/combined/FullPut/fig_1024_1_17_none_nopoolbig.png differ diff --git a/combined/FullPut/fig_1024_1_17_none_nopoolsmall.png b/combined/FullPut/fig_1024_1_17_none_nopoolsmall.png new file mode 100644 index 0000000..cb977ef Binary files /dev/null and b/combined/FullPut/fig_1024_1_17_none_nopoolsmall.png differ diff --git a/combined/colourful.zip b/combined/colourful.zip new file mode 100644 index 0000000..d5a9241 Binary files /dev/null and b/combined/colourful.zip differ diff --git a/combined/colourful/fig_1024_1_copyout_allbig.png b/combined/colourful/fig_1024_1_copyout_allbig.png new file mode 100644 index 0000000..372a1a4 Binary files /dev/null and b/combined/colourful/fig_1024_1_copyout_allbig.png differ diff --git a/combined/colourful/fig_1024_1_copyout_allsmall.png b/combined/colourful/fig_1024_1_copyout_allsmall.png new file mode 100644 index 0000000..ef66cd4 Binary files /dev/null and b/combined/colourful/fig_1024_1_copyout_allsmall.png differ diff --git a/combined/colourful/fig_1024_1_copyout_ba.png b/combined/colourful/fig_1024_1_copyout_ba.png new file mode 100644 index 0000000..61f1211 Binary files /dev/null and b/combined/colourful/fig_1024_1_copyout_ba.png differ diff --git a/combined/colourful/fig_1024_1_copyout_bb.png b/combined/colourful/fig_1024_1_copyout_bb.png new file mode 100644 index 0000000..0976ec4 Binary files /dev/null and b/combined/colourful/fig_1024_1_copyout_bb.png differ diff --git a/combined/colourful/fig_1024_1_copyout_crit.png b/combined/colourful/fig_1024_1_copyout_crit.png new file mode 100644 index 0000000..da11c02 Binary files /dev/null and b/combined/colourful/fig_1024_1_copyout_crit.png differ diff --git a/combined/colourful/fig_1024_1_copyout_dir.png b/combined/colourful/fig_1024_1_copyout_dir.png new file mode 100644 index 0000000..fe4c39b Binary files /dev/null and b/combined/colourful/fig_1024_1_copyout_dir.png differ diff --git a/combined/colourful/fig_1024_1_copyout_getelems.png b/combined/colourful/fig_1024_1_copyout_getelems.png new file mode 100644 index 0000000..f5b4e78 Binary files /dev/null and b/combined/colourful/fig_1024_1_copyout_getelems.png differ diff --git a/combined/colourful/fig_1024_1_copyout_ind.png b/combined/colourful/fig_1024_1_copyout_ind.png new file mode 100644 index 0000000..5745261 Binary files /dev/null and b/combined/colourful/fig_1024_1_copyout_ind.png differ diff --git a/combined/colourful/fig_1024_1_copyout_nopoolbig.png b/combined/colourful/fig_1024_1_copyout_nopoolbig.png new file mode 100644 index 0000000..6e30307 Binary files /dev/null and b/combined/colourful/fig_1024_1_copyout_nopoolbig.png differ diff --git a/combined/colourful/fig_1024_1_copyout_nopoolsmall.png b/combined/colourful/fig_1024_1_copyout_nopoolsmall.png new file mode 100644 index 0000000..0032b4c Binary files /dev/null and b/combined/colourful/fig_1024_1_copyout_nopoolsmall.png differ diff --git a/combined/colourful/fig_1024_1_copyout_setreg.png b/combined/colourful/fig_1024_1_copyout_setreg.png new file mode 100644 index 0000000..655e106 Binary files /dev/null and b/combined/colourful/fig_1024_1_copyout_setreg.png differ diff --git a/combined/colourful/fig_1024_1_none_allbig.png b/combined/colourful/fig_1024_1_none_allbig.png new file mode 100644 index 0000000..143b3a4 Binary files /dev/null and b/combined/colourful/fig_1024_1_none_allbig.png differ diff --git a/combined/colourful/fig_1024_1_none_allsmall.png b/combined/colourful/fig_1024_1_none_allsmall.png new file mode 100644 index 0000000..cb3c335 Binary files /dev/null and b/combined/colourful/fig_1024_1_none_allsmall.png differ diff --git a/combined/colourful/fig_1024_1_none_ba.png b/combined/colourful/fig_1024_1_none_ba.png new file mode 100644 index 0000000..24024a1 Binary files /dev/null and b/combined/colourful/fig_1024_1_none_ba.png differ diff --git a/combined/colourful/fig_1024_1_none_bb.png b/combined/colourful/fig_1024_1_none_bb.png new file mode 100644 index 0000000..9a8301f Binary files /dev/null and b/combined/colourful/fig_1024_1_none_bb.png differ diff --git a/combined/colourful/fig_1024_1_none_crit.png b/combined/colourful/fig_1024_1_none_crit.png new file mode 100644 index 0000000..f983c32 Binary files /dev/null and b/combined/colourful/fig_1024_1_none_crit.png differ diff --git a/combined/colourful/fig_1024_1_none_dir.png b/combined/colourful/fig_1024_1_none_dir.png new file mode 100644 index 0000000..ca0359b Binary files /dev/null and b/combined/colourful/fig_1024_1_none_dir.png differ diff --git a/combined/colourful/fig_1024_1_none_getelems.png b/combined/colourful/fig_1024_1_none_getelems.png new file mode 100644 index 0000000..569304f Binary files /dev/null and b/combined/colourful/fig_1024_1_none_getelems.png differ diff --git a/combined/colourful/fig_1024_1_none_ind.png b/combined/colourful/fig_1024_1_none_ind.png new file mode 100644 index 0000000..39cf824 Binary files /dev/null and b/combined/colourful/fig_1024_1_none_ind.png differ diff --git a/combined/colourful/fig_1024_1_none_nopoolbig.png b/combined/colourful/fig_1024_1_none_nopoolbig.png new file mode 100644 index 0000000..a1398ee Binary files /dev/null and b/combined/colourful/fig_1024_1_none_nopoolbig.png differ diff --git a/combined/colourful/fig_1024_1_none_nopoolsmall.png b/combined/colourful/fig_1024_1_none_nopoolsmall.png new file mode 100644 index 0000000..3133006 Binary files /dev/null and b/combined/colourful/fig_1024_1_none_nopoolsmall.png differ diff --git a/combined/colourful/fig_1024_1_none_setreg.png b/combined/colourful/fig_1024_1_none_setreg.png new file mode 100644 index 0000000..ff0f325 Binary files /dev/null and b/combined/colourful/fig_1024_1_none_setreg.png differ diff --git a/combined/combined_graphs/fig_1024_1_copyout_allbig.png b/combined/combined_graphs/fig_1024_1_copyout_allbig.png new file mode 100644 index 0000000..ce3c165 Binary files /dev/null and b/combined/combined_graphs/fig_1024_1_copyout_allbig.png differ diff --git a/combined/combined_graphs/fig_1024_1_copyout_allsmall.png b/combined/combined_graphs/fig_1024_1_copyout_allsmall.png new file mode 100644 index 0000000..55ff6f1 Binary files /dev/null and b/combined/combined_graphs/fig_1024_1_copyout_allsmall.png differ diff --git a/combined/combined_graphs/fig_1024_1_copyout_ba.png b/combined/combined_graphs/fig_1024_1_copyout_ba.png new file mode 100644 index 0000000..2c7fb56 Binary files /dev/null and b/combined/combined_graphs/fig_1024_1_copyout_ba.png differ diff --git a/combined/combined_graphs/fig_1024_1_copyout_bb.png b/combined/combined_graphs/fig_1024_1_copyout_bb.png new file mode 100644 index 0000000..e47d911 Binary files /dev/null and b/combined/combined_graphs/fig_1024_1_copyout_bb.png differ diff --git a/combined/combined_graphs/fig_1024_1_copyout_crit.png b/combined/combined_graphs/fig_1024_1_copyout_crit.png new file mode 100644 index 0000000..76b4a47 Binary files /dev/null and b/combined/combined_graphs/fig_1024_1_copyout_crit.png differ diff --git a/combined/combined_graphs/fig_1024_1_copyout_dir.png b/combined/combined_graphs/fig_1024_1_copyout_dir.png new file mode 100644 index 0000000..ef8cfc7 Binary files /dev/null and b/combined/combined_graphs/fig_1024_1_copyout_dir.png differ diff --git a/combined/combined_graphs/fig_1024_1_copyout_getelems.png b/combined/combined_graphs/fig_1024_1_copyout_getelems.png new file mode 100644 index 0000000..6279d2c Binary files /dev/null and b/combined/combined_graphs/fig_1024_1_copyout_getelems.png differ diff --git a/combined/combined_graphs/fig_1024_1_copyout_ind.png b/combined/combined_graphs/fig_1024_1_copyout_ind.png new file mode 100644 index 0000000..cc08354 Binary files /dev/null and b/combined/combined_graphs/fig_1024_1_copyout_ind.png differ diff --git a/combined/combined_graphs/fig_1024_1_copyout_nopoolbig.png b/combined/combined_graphs/fig_1024_1_copyout_nopoolbig.png new file mode 100644 index 0000000..3852076 Binary files /dev/null and b/combined/combined_graphs/fig_1024_1_copyout_nopoolbig.png differ diff --git a/combined/combined_graphs/fig_1024_1_copyout_nopoolsmall.png b/combined/combined_graphs/fig_1024_1_copyout_nopoolsmall.png new file mode 100644 index 0000000..d28275d Binary files /dev/null and b/combined/combined_graphs/fig_1024_1_copyout_nopoolsmall.png differ diff --git a/combined/combined_graphs/fig_1024_1_copyout_setreg.png b/combined/combined_graphs/fig_1024_1_copyout_setreg.png new file mode 100644 index 0000000..b8fb4eb Binary files /dev/null and b/combined/combined_graphs/fig_1024_1_copyout_setreg.png differ diff --git a/combined/combined_graphs/fig_1024_1_none_allbig.png b/combined/combined_graphs/fig_1024_1_none_allbig.png new file mode 100644 index 0000000..df6a91d Binary files /dev/null and b/combined/combined_graphs/fig_1024_1_none_allbig.png differ diff --git a/combined/combined_graphs/fig_1024_1_none_allsmall.png b/combined/combined_graphs/fig_1024_1_none_allsmall.png new file mode 100644 index 0000000..bbb571c Binary files /dev/null and b/combined/combined_graphs/fig_1024_1_none_allsmall.png differ diff --git a/combined/combined_graphs/fig_1024_1_none_ba.png b/combined/combined_graphs/fig_1024_1_none_ba.png new file mode 100644 index 0000000..54b6ea2 Binary files /dev/null and b/combined/combined_graphs/fig_1024_1_none_ba.png differ diff --git a/combined/combined_graphs/fig_1024_1_none_bb.png b/combined/combined_graphs/fig_1024_1_none_bb.png new file mode 100644 index 0000000..583c3da Binary files /dev/null and b/combined/combined_graphs/fig_1024_1_none_bb.png differ diff --git a/combined/combined_graphs/fig_1024_1_none_crit.png b/combined/combined_graphs/fig_1024_1_none_crit.png new file mode 100644 index 0000000..45f7954 Binary files /dev/null and b/combined/combined_graphs/fig_1024_1_none_crit.png differ diff --git a/combined/combined_graphs/fig_1024_1_none_dir.png b/combined/combined_graphs/fig_1024_1_none_dir.png new file mode 100644 index 0000000..2691e00 Binary files /dev/null and b/combined/combined_graphs/fig_1024_1_none_dir.png differ diff --git a/combined/combined_graphs/fig_1024_1_none_getelems.png b/combined/combined_graphs/fig_1024_1_none_getelems.png new file mode 100644 index 0000000..331af0d Binary files /dev/null and b/combined/combined_graphs/fig_1024_1_none_getelems.png differ diff --git a/combined/combined_graphs/fig_1024_1_none_ind.png b/combined/combined_graphs/fig_1024_1_none_ind.png new file mode 100644 index 0000000..77fd293 Binary files /dev/null and b/combined/combined_graphs/fig_1024_1_none_ind.png differ diff --git a/combined/combined_graphs/fig_1024_1_none_nopoolbig.png b/combined/combined_graphs/fig_1024_1_none_nopoolbig.png new file mode 100644 index 0000000..ca27fff Binary files /dev/null and b/combined/combined_graphs/fig_1024_1_none_nopoolbig.png differ diff --git a/combined/combined_graphs/fig_1024_1_none_nopoolsmall.png b/combined/combined_graphs/fig_1024_1_none_nopoolsmall.png new file mode 100644 index 0000000..71e2bc1 Binary files /dev/null and b/combined/combined_graphs/fig_1024_1_none_nopoolsmall.png differ diff --git a/combined/combined_graphs/fig_1024_1_none_setreg.png b/combined/combined_graphs/fig_1024_1_none_setreg.png new file mode 100644 index 0000000..81a9703 Binary files /dev/null and b/combined/combined_graphs/fig_1024_1_none_setreg.png differ diff --git a/combined/jmh_2026-01-02T21:57:59.588657/jmh_2026-01-02T21:57:59.588657.md b/combined/jmh_2026-01-02T21:57:59.588657/jmh_2026-01-02T21:57:59.588657.md new file mode 100644 index 0000000..5a27e5d --- /dev/null +++ b/combined/jmh_2026-01-02T21:57:59.588657/jmh_2026-01-02T21:57:59.588657.md @@ -0,0 +1,45 @@ +## JMH Run +This JMH run was generated on 2026-01-02T21:57:59.588657 +#### Config +The configuration was read from `/home/rklein/jni-benchmarks/jmh_tiny_get_java21.json` +```json +{ + "benchmark": "GetJNIBenchmark", + "jvmargs": [ + "Xmx4G", + "XX:ErrorFile=./results/hs_err_pid%p.log", + "XX:+HeapDumpOnOutOfMemoryError", + "-enable-preview" + ], + "params": { + "valueSize": [ + 50, + 1024, + 4096, + 16384 + ], + "cacheMB": [ + 1 + ], + "checksum": [ + "none", + "copyout" + ] + }, + "options": { + "batchsize": 1, + "warmupiterations": 5, + "warmuptime": "10ms", + "iterations": 5, + "time": "50ms" + }, + "result.path": "./results", + "java.library.path": "target/jni-benchmarks-1.0.1-SNAPSHOT-application/jni-benchmarks-1.0.1-SNAPSHOT/lib", + "jar": "target/jni-benchmarks-1.0.1-SNAPSHOT-benchmarks.nar" +} +``` +#### Command +The java command executed to run the tests +``` +java -Xmx4G -XX:ErrorFile=./results/hs_err_pid%p.log -XX:+HeapDumpOnOutOfMemoryError --enable-preview -Djava.library.path=target/jni-benchmarks-1.0.1-SNAPSHOT-application/jni-benchmarks-1.0.1-SNAPSHOT/lib -jar target/jni-benchmarks-1.0.1-SNAPSHOT-benchmarks.nar GetJNIBenchmark -p valueSize=50,1024,4096,16384 -p cacheMB=1 -p checksum=none,copyout -bs 1 -wi 5 -w 10ms -i 5 -r 50ms -rff results/jmh_2026-01-02T21:57:59.588657/jmh_2026-01-02T21:57:59.588657.csv +``` diff --git a/combined/jmh_2026-01-02T22:47:26.388891/fig_1024_1_copyout_allbig.png b/combined/jmh_2026-01-02T22:47:26.388891/fig_1024_1_copyout_allbig.png new file mode 100644 index 0000000..67d3915 Binary files /dev/null and b/combined/jmh_2026-01-02T22:47:26.388891/fig_1024_1_copyout_allbig.png differ diff --git a/combined/jmh_2026-01-02T22:47:26.388891/fig_1024_1_copyout_allsmall.png b/combined/jmh_2026-01-02T22:47:26.388891/fig_1024_1_copyout_allsmall.png new file mode 100644 index 0000000..4f314bc Binary files /dev/null and b/combined/jmh_2026-01-02T22:47:26.388891/fig_1024_1_copyout_allsmall.png differ diff --git a/combined/jmh_2026-01-02T22:47:26.388891/fig_1024_1_copyout_ba.png b/combined/jmh_2026-01-02T22:47:26.388891/fig_1024_1_copyout_ba.png new file mode 100644 index 0000000..4b271c3 Binary files /dev/null and b/combined/jmh_2026-01-02T22:47:26.388891/fig_1024_1_copyout_ba.png differ diff --git a/combined/jmh_2026-01-02T22:47:26.388891/fig_1024_1_copyout_bb.png b/combined/jmh_2026-01-02T22:47:26.388891/fig_1024_1_copyout_bb.png new file mode 100644 index 0000000..c4f5b34 Binary files /dev/null and b/combined/jmh_2026-01-02T22:47:26.388891/fig_1024_1_copyout_bb.png differ diff --git a/combined/jmh_2026-01-02T22:47:26.388891/fig_1024_1_copyout_crit.png b/combined/jmh_2026-01-02T22:47:26.388891/fig_1024_1_copyout_crit.png new file mode 100644 index 0000000..b6b1823 Binary files /dev/null and b/combined/jmh_2026-01-02T22:47:26.388891/fig_1024_1_copyout_crit.png differ diff --git a/combined/jmh_2026-01-02T22:47:26.388891/fig_1024_1_copyout_dir.png b/combined/jmh_2026-01-02T22:47:26.388891/fig_1024_1_copyout_dir.png new file mode 100644 index 0000000..c8e3b7a Binary files /dev/null and b/combined/jmh_2026-01-02T22:47:26.388891/fig_1024_1_copyout_dir.png differ diff --git a/combined/jmh_2026-01-02T22:47:26.388891/fig_1024_1_copyout_getelems.png b/combined/jmh_2026-01-02T22:47:26.388891/fig_1024_1_copyout_getelems.png new file mode 100644 index 0000000..f868b12 Binary files /dev/null and b/combined/jmh_2026-01-02T22:47:26.388891/fig_1024_1_copyout_getelems.png differ diff --git a/combined/jmh_2026-01-02T22:47:26.388891/fig_1024_1_copyout_ind.png b/combined/jmh_2026-01-02T22:47:26.388891/fig_1024_1_copyout_ind.png new file mode 100644 index 0000000..e067505 Binary files /dev/null and b/combined/jmh_2026-01-02T22:47:26.388891/fig_1024_1_copyout_ind.png differ diff --git a/combined/jmh_2026-01-02T22:47:26.388891/fig_1024_1_copyout_nopoolbig.png b/combined/jmh_2026-01-02T22:47:26.388891/fig_1024_1_copyout_nopoolbig.png new file mode 100644 index 0000000..bc1851a Binary files /dev/null and b/combined/jmh_2026-01-02T22:47:26.388891/fig_1024_1_copyout_nopoolbig.png differ diff --git a/combined/jmh_2026-01-02T22:47:26.388891/fig_1024_1_copyout_nopoolsmall.png b/combined/jmh_2026-01-02T22:47:26.388891/fig_1024_1_copyout_nopoolsmall.png new file mode 100644 index 0000000..216f9bf Binary files /dev/null and b/combined/jmh_2026-01-02T22:47:26.388891/fig_1024_1_copyout_nopoolsmall.png differ diff --git a/combined/jmh_2026-01-02T22:47:26.388891/fig_1024_1_copyout_setreg.png b/combined/jmh_2026-01-02T22:47:26.388891/fig_1024_1_copyout_setreg.png new file mode 100644 index 0000000..d130350 Binary files /dev/null and b/combined/jmh_2026-01-02T22:47:26.388891/fig_1024_1_copyout_setreg.png differ diff --git a/combined/jmh_2026-01-02T22:47:26.388891/fig_1024_1_none_allbig.png b/combined/jmh_2026-01-02T22:47:26.388891/fig_1024_1_none_allbig.png new file mode 100644 index 0000000..3cee99d Binary files /dev/null and b/combined/jmh_2026-01-02T22:47:26.388891/fig_1024_1_none_allbig.png differ diff --git a/combined/jmh_2026-01-02T22:47:26.388891/fig_1024_1_none_allsmall.png b/combined/jmh_2026-01-02T22:47:26.388891/fig_1024_1_none_allsmall.png new file mode 100644 index 0000000..f2dd688 Binary files /dev/null and b/combined/jmh_2026-01-02T22:47:26.388891/fig_1024_1_none_allsmall.png differ diff --git a/combined/jmh_2026-01-02T22:47:26.388891/fig_1024_1_none_ba.png b/combined/jmh_2026-01-02T22:47:26.388891/fig_1024_1_none_ba.png new file mode 100644 index 0000000..2ff2a85 Binary files /dev/null and b/combined/jmh_2026-01-02T22:47:26.388891/fig_1024_1_none_ba.png differ diff --git a/combined/jmh_2026-01-02T22:47:26.388891/fig_1024_1_none_bb.png b/combined/jmh_2026-01-02T22:47:26.388891/fig_1024_1_none_bb.png new file mode 100644 index 0000000..4627046 Binary files /dev/null and b/combined/jmh_2026-01-02T22:47:26.388891/fig_1024_1_none_bb.png differ diff --git a/combined/jmh_2026-01-02T22:47:26.388891/fig_1024_1_none_crit.png b/combined/jmh_2026-01-02T22:47:26.388891/fig_1024_1_none_crit.png new file mode 100644 index 0000000..df153b5 Binary files /dev/null and b/combined/jmh_2026-01-02T22:47:26.388891/fig_1024_1_none_crit.png differ diff --git a/combined/jmh_2026-01-02T22:47:26.388891/fig_1024_1_none_dir.png b/combined/jmh_2026-01-02T22:47:26.388891/fig_1024_1_none_dir.png new file mode 100644 index 0000000..f26e401 Binary files /dev/null and b/combined/jmh_2026-01-02T22:47:26.388891/fig_1024_1_none_dir.png differ diff --git a/combined/jmh_2026-01-02T22:47:26.388891/fig_1024_1_none_getelems.png b/combined/jmh_2026-01-02T22:47:26.388891/fig_1024_1_none_getelems.png new file mode 100644 index 0000000..d309db5 Binary files /dev/null and b/combined/jmh_2026-01-02T22:47:26.388891/fig_1024_1_none_getelems.png differ diff --git a/combined/jmh_2026-01-02T22:47:26.388891/fig_1024_1_none_ind.png b/combined/jmh_2026-01-02T22:47:26.388891/fig_1024_1_none_ind.png new file mode 100644 index 0000000..a01cdcf Binary files /dev/null and b/combined/jmh_2026-01-02T22:47:26.388891/fig_1024_1_none_ind.png differ diff --git a/combined/jmh_2026-01-02T22:47:26.388891/fig_1024_1_none_nopoolbig.png b/combined/jmh_2026-01-02T22:47:26.388891/fig_1024_1_none_nopoolbig.png new file mode 100644 index 0000000..0f7ccce Binary files /dev/null and b/combined/jmh_2026-01-02T22:47:26.388891/fig_1024_1_none_nopoolbig.png differ diff --git a/combined/jmh_2026-01-02T22:47:26.388891/fig_1024_1_none_nopoolsmall.png b/combined/jmh_2026-01-02T22:47:26.388891/fig_1024_1_none_nopoolsmall.png new file mode 100644 index 0000000..42e838c Binary files /dev/null and b/combined/jmh_2026-01-02T22:47:26.388891/fig_1024_1_none_nopoolsmall.png differ diff --git a/combined/jmh_2026-01-02T22:47:26.388891/fig_1024_1_none_setreg.png b/combined/jmh_2026-01-02T22:47:26.388891/fig_1024_1_none_setreg.png new file mode 100644 index 0000000..4afb874 Binary files /dev/null and b/combined/jmh_2026-01-02T22:47:26.388891/fig_1024_1_none_setreg.png differ diff --git a/combined/jmh_2026-01-02T22:47:26.388891/jmh_2026-01-02T22:47:26.388891.md b/combined/jmh_2026-01-02T22:47:26.388891/jmh_2026-01-02T22:47:26.388891.md new file mode 100644 index 0000000..bf267bf --- /dev/null +++ b/combined/jmh_2026-01-02T22:47:26.388891/jmh_2026-01-02T22:47:26.388891.md @@ -0,0 +1,45 @@ +## JMH Run +This JMH run was generated on 2026-01-02T22:47:26.388891 +#### Config +The configuration was read from `/home/rklein/jni-benchmarks/jmh_tiny_get_java21.json` +```json +{ + "benchmark": "GetJNIBenchmark", + "jvmargs": [ + "Xmx4G", + "XX:ErrorFile=./results/hs_err_pid%p.log", + "XX:+HeapDumpOnOutOfMemoryError", + "-enable-preview" + ], + "params": { + "valueSize": [ + 50, + 1024, + 4096, + 16384 + ], + "cacheMB": [ + 1 + ], + "checksum": [ + "none", + "copyout" + ] + }, + "options": { + "batchsize": 1, + "warmupiterations": 5, + "warmuptime": "10ms", + "iterations": 5, + "time": "50ms" + }, + "result.path": "./results", + "java.library.path": "target/jni-benchmarks-1.0.1-SNAPSHOT-application/jni-benchmarks-1.0.1-SNAPSHOT/lib", + "jar": "target/jni-benchmarks-1.0.1-SNAPSHOT-benchmarks.nar" +} +``` +#### Command +The java command executed to run the tests +``` +java -Xmx4G -XX:ErrorFile=./results/hs_err_pid%p.log -XX:+HeapDumpOnOutOfMemoryError --enable-preview -Djava.library.path=target/jni-benchmarks-1.0.1-SNAPSHOT-application/jni-benchmarks-1.0.1-SNAPSHOT/lib -jar target/jni-benchmarks-1.0.1-SNAPSHOT-benchmarks.nar GetJNIBenchmark -p valueSize=50,1024,4096,16384 -p cacheMB=1 -p checksum=none,copyout -bs 1 -wi 5 -w 10ms -i 5 -r 50ms -rff results/jmh_2026-01-02T22:47:26.388891/jmh_2026-01-02T22:47:26.388891.csv +``` diff --git a/combined/jmh_2026-01-05T12:32:57.431237/fig_1024_1_copyout_allbig.png b/combined/jmh_2026-01-05T12:32:57.431237/fig_1024_1_copyout_allbig.png new file mode 100644 index 0000000..956b5d1 Binary files /dev/null and b/combined/jmh_2026-01-05T12:32:57.431237/fig_1024_1_copyout_allbig.png differ diff --git a/combined/jmh_2026-01-05T12:32:57.431237/fig_1024_1_copyout_allsmall.png b/combined/jmh_2026-01-05T12:32:57.431237/fig_1024_1_copyout_allsmall.png new file mode 100644 index 0000000..d5bca75 Binary files /dev/null and b/combined/jmh_2026-01-05T12:32:57.431237/fig_1024_1_copyout_allsmall.png differ diff --git a/combined/jmh_2026-01-05T12:32:57.431237/fig_1024_1_copyout_ba.png b/combined/jmh_2026-01-05T12:32:57.431237/fig_1024_1_copyout_ba.png new file mode 100644 index 0000000..d8b0b61 Binary files /dev/null and b/combined/jmh_2026-01-05T12:32:57.431237/fig_1024_1_copyout_ba.png differ diff --git a/combined/jmh_2026-01-05T12:32:57.431237/fig_1024_1_copyout_bb.png b/combined/jmh_2026-01-05T12:32:57.431237/fig_1024_1_copyout_bb.png new file mode 100644 index 0000000..b97411b Binary files /dev/null and b/combined/jmh_2026-01-05T12:32:57.431237/fig_1024_1_copyout_bb.png differ diff --git a/combined/jmh_2026-01-05T12:32:57.431237/fig_1024_1_copyout_crit.png b/combined/jmh_2026-01-05T12:32:57.431237/fig_1024_1_copyout_crit.png new file mode 100644 index 0000000..12b9758 Binary files /dev/null and b/combined/jmh_2026-01-05T12:32:57.431237/fig_1024_1_copyout_crit.png differ diff --git a/combined/jmh_2026-01-05T12:32:57.431237/fig_1024_1_copyout_dir.png b/combined/jmh_2026-01-05T12:32:57.431237/fig_1024_1_copyout_dir.png new file mode 100644 index 0000000..87893b8 Binary files /dev/null and b/combined/jmh_2026-01-05T12:32:57.431237/fig_1024_1_copyout_dir.png differ diff --git a/combined/jmh_2026-01-05T12:32:57.431237/fig_1024_1_copyout_getelems.png b/combined/jmh_2026-01-05T12:32:57.431237/fig_1024_1_copyout_getelems.png new file mode 100644 index 0000000..435c2f8 Binary files /dev/null and b/combined/jmh_2026-01-05T12:32:57.431237/fig_1024_1_copyout_getelems.png differ diff --git a/combined/jmh_2026-01-05T12:32:57.431237/fig_1024_1_copyout_ind.png b/combined/jmh_2026-01-05T12:32:57.431237/fig_1024_1_copyout_ind.png new file mode 100644 index 0000000..b7a112c Binary files /dev/null and b/combined/jmh_2026-01-05T12:32:57.431237/fig_1024_1_copyout_ind.png differ diff --git a/combined/jmh_2026-01-05T12:32:57.431237/fig_1024_1_copyout_nopoolbig.png b/combined/jmh_2026-01-05T12:32:57.431237/fig_1024_1_copyout_nopoolbig.png new file mode 100644 index 0000000..988f527 Binary files /dev/null and b/combined/jmh_2026-01-05T12:32:57.431237/fig_1024_1_copyout_nopoolbig.png differ diff --git a/combined/jmh_2026-01-05T12:32:57.431237/fig_1024_1_copyout_nopoolsmall.png b/combined/jmh_2026-01-05T12:32:57.431237/fig_1024_1_copyout_nopoolsmall.png new file mode 100644 index 0000000..ef3eb28 Binary files /dev/null and b/combined/jmh_2026-01-05T12:32:57.431237/fig_1024_1_copyout_nopoolsmall.png differ diff --git a/combined/jmh_2026-01-05T12:32:57.431237/fig_1024_1_copyout_setreg.png b/combined/jmh_2026-01-05T12:32:57.431237/fig_1024_1_copyout_setreg.png new file mode 100644 index 0000000..aed4528 Binary files /dev/null and b/combined/jmh_2026-01-05T12:32:57.431237/fig_1024_1_copyout_setreg.png differ diff --git a/combined/jmh_2026-01-05T12:32:57.431237/fig_1024_1_none_allbig.png b/combined/jmh_2026-01-05T12:32:57.431237/fig_1024_1_none_allbig.png new file mode 100644 index 0000000..22eef55 Binary files /dev/null and b/combined/jmh_2026-01-05T12:32:57.431237/fig_1024_1_none_allbig.png differ diff --git a/combined/jmh_2026-01-05T12:32:57.431237/fig_1024_1_none_allsmall.png b/combined/jmh_2026-01-05T12:32:57.431237/fig_1024_1_none_allsmall.png new file mode 100644 index 0000000..9d4370e Binary files /dev/null and b/combined/jmh_2026-01-05T12:32:57.431237/fig_1024_1_none_allsmall.png differ diff --git a/combined/jmh_2026-01-05T12:32:57.431237/fig_1024_1_none_ba.png b/combined/jmh_2026-01-05T12:32:57.431237/fig_1024_1_none_ba.png new file mode 100644 index 0000000..e20cfc6 Binary files /dev/null and b/combined/jmh_2026-01-05T12:32:57.431237/fig_1024_1_none_ba.png differ diff --git a/combined/jmh_2026-01-05T12:32:57.431237/fig_1024_1_none_bb.png b/combined/jmh_2026-01-05T12:32:57.431237/fig_1024_1_none_bb.png new file mode 100644 index 0000000..996a05b Binary files /dev/null and b/combined/jmh_2026-01-05T12:32:57.431237/fig_1024_1_none_bb.png differ diff --git a/combined/jmh_2026-01-05T12:32:57.431237/fig_1024_1_none_crit.png b/combined/jmh_2026-01-05T12:32:57.431237/fig_1024_1_none_crit.png new file mode 100644 index 0000000..5ea34a2 Binary files /dev/null and b/combined/jmh_2026-01-05T12:32:57.431237/fig_1024_1_none_crit.png differ diff --git a/combined/jmh_2026-01-05T12:32:57.431237/fig_1024_1_none_dir.png b/combined/jmh_2026-01-05T12:32:57.431237/fig_1024_1_none_dir.png new file mode 100644 index 0000000..66805ac Binary files /dev/null and b/combined/jmh_2026-01-05T12:32:57.431237/fig_1024_1_none_dir.png differ diff --git a/combined/jmh_2026-01-05T12:32:57.431237/fig_1024_1_none_getelems.png b/combined/jmh_2026-01-05T12:32:57.431237/fig_1024_1_none_getelems.png new file mode 100644 index 0000000..441c6b8 Binary files /dev/null and b/combined/jmh_2026-01-05T12:32:57.431237/fig_1024_1_none_getelems.png differ diff --git a/combined/jmh_2026-01-05T12:32:57.431237/fig_1024_1_none_ind.png b/combined/jmh_2026-01-05T12:32:57.431237/fig_1024_1_none_ind.png new file mode 100644 index 0000000..39c599d Binary files /dev/null and b/combined/jmh_2026-01-05T12:32:57.431237/fig_1024_1_none_ind.png differ diff --git a/combined/jmh_2026-01-05T12:32:57.431237/fig_1024_1_none_nopoolbig.png b/combined/jmh_2026-01-05T12:32:57.431237/fig_1024_1_none_nopoolbig.png new file mode 100644 index 0000000..5774b50 Binary files /dev/null and b/combined/jmh_2026-01-05T12:32:57.431237/fig_1024_1_none_nopoolbig.png differ diff --git a/combined/jmh_2026-01-05T12:32:57.431237/fig_1024_1_none_nopoolsmall.png b/combined/jmh_2026-01-05T12:32:57.431237/fig_1024_1_none_nopoolsmall.png new file mode 100644 index 0000000..d394984 Binary files /dev/null and b/combined/jmh_2026-01-05T12:32:57.431237/fig_1024_1_none_nopoolsmall.png differ diff --git a/combined/jmh_2026-01-05T12:32:57.431237/fig_1024_1_none_setreg.png b/combined/jmh_2026-01-05T12:32:57.431237/fig_1024_1_none_setreg.png new file mode 100644 index 0000000..7200c0d Binary files /dev/null and b/combined/jmh_2026-01-05T12:32:57.431237/fig_1024_1_none_setreg.png differ diff --git a/combined/jmh_2026-01-05T12:32:57.431237/jmh_2026-01-05T12:32:57.431237.md b/combined/jmh_2026-01-05T12:32:57.431237/jmh_2026-01-05T12:32:57.431237.md new file mode 100644 index 0000000..46639f3 --- /dev/null +++ b/combined/jmh_2026-01-05T12:32:57.431237/jmh_2026-01-05T12:32:57.431237.md @@ -0,0 +1,45 @@ +## JMH Run +This JMH run was generated on 2026-01-05T12:32:57.431237 +#### Config +The configuration was read from `/home/rklein/jni-benchmarks/jmh_tiny_get_java21.json` +```json +{ + "benchmark": "GetJNIBenchmark", + "jvmargs": [ + "Xmx4G", + "XX:ErrorFile=./results/hs_err_pid%p.log", + "XX:+HeapDumpOnOutOfMemoryError", + "-enable-preview" + ], + "params": { + "valueSize": [ + 50, + 1024, + 4096, + 16384 + ], + "cacheMB": [ + 1 + ], + "checksum": [ + "none", + "copyout" + ] + }, + "options": { + "batchsize": 1, + "warmupiterations": 5, + "warmuptime": "10ms", + "iterations": 5, + "time": "50ms" + }, + "result.path": "./results", + "java.library.path": "target/jni-benchmarks-1.0.1-SNAPSHOT-application/jni-benchmarks-1.0.1-SNAPSHOT/lib", + "jar": "target/jni-benchmarks-1.0.1-SNAPSHOT-benchmarks.nar" +} +``` +#### Command +The java command executed to run the tests +``` +java -Xmx4G -XX:ErrorFile=./results/hs_err_pid%p.log -XX:+HeapDumpOnOutOfMemoryError --enable-preview -Djava.library.path=target/jni-benchmarks-1.0.1-SNAPSHOT-application/jni-benchmarks-1.0.1-SNAPSHOT/lib -jar target/jni-benchmarks-1.0.1-SNAPSHOT-benchmarks.nar GetJNIBenchmark -p valueSize=50,1024,4096,16384 -p cacheMB=1 -p checksum=none,copyout -bs 1 -wi 5 -w 10ms -i 5 -r 50ms -rff results/jmh_2026-01-05T12:32:57.431237/jmh_2026-01-05T12:32:57.431237.csv +``` diff --git a/combined/jmh_2026-01-05T12:32:57.431237/system_info.json b/combined/jmh_2026-01-05T12:32:57.431237/system_info.json new file mode 100644 index 0000000..612aabf --- /dev/null +++ b/combined/jmh_2026-01-05T12:32:57.431237/system_info.json @@ -0,0 +1,3 @@ +{ + "system_info": "x86_64 - Intel(R) Xeon(R) CPU E5-1650 v3 @ 3.50GHz - 125GB RAM - Ubuntu 24.04.3 LTS - Kernel: 6.14.0-36-generic - openjdk version \"21.0.9\" 2025-10-21" +} \ No newline at end of file diff --git a/combined/jmh_2026-01-05T16:16:45.927702/fig_1024_1_copyout_allbig.png b/combined/jmh_2026-01-05T16:16:45.927702/fig_1024_1_copyout_allbig.png new file mode 100644 index 0000000..e5608b0 Binary files /dev/null and b/combined/jmh_2026-01-05T16:16:45.927702/fig_1024_1_copyout_allbig.png differ diff --git a/combined/jmh_2026-01-05T16:16:45.927702/fig_1024_1_copyout_allsmall.png b/combined/jmh_2026-01-05T16:16:45.927702/fig_1024_1_copyout_allsmall.png new file mode 100644 index 0000000..f83aecd Binary files /dev/null and b/combined/jmh_2026-01-05T16:16:45.927702/fig_1024_1_copyout_allsmall.png differ diff --git a/combined/jmh_2026-01-05T16:16:45.927702/fig_1024_1_copyout_ba.png b/combined/jmh_2026-01-05T16:16:45.927702/fig_1024_1_copyout_ba.png new file mode 100644 index 0000000..2c04a6f Binary files /dev/null and b/combined/jmh_2026-01-05T16:16:45.927702/fig_1024_1_copyout_ba.png differ diff --git a/combined/jmh_2026-01-05T16:16:45.927702/fig_1024_1_copyout_bb.png b/combined/jmh_2026-01-05T16:16:45.927702/fig_1024_1_copyout_bb.png new file mode 100644 index 0000000..2c389ea Binary files /dev/null and b/combined/jmh_2026-01-05T16:16:45.927702/fig_1024_1_copyout_bb.png differ diff --git a/combined/jmh_2026-01-05T16:16:45.927702/fig_1024_1_copyout_crit.png b/combined/jmh_2026-01-05T16:16:45.927702/fig_1024_1_copyout_crit.png new file mode 100644 index 0000000..befa2e2 Binary files /dev/null and b/combined/jmh_2026-01-05T16:16:45.927702/fig_1024_1_copyout_crit.png differ diff --git a/combined/jmh_2026-01-05T16:16:45.927702/fig_1024_1_copyout_dir.png b/combined/jmh_2026-01-05T16:16:45.927702/fig_1024_1_copyout_dir.png new file mode 100644 index 0000000..cdcb37f Binary files /dev/null and b/combined/jmh_2026-01-05T16:16:45.927702/fig_1024_1_copyout_dir.png differ diff --git a/combined/jmh_2026-01-05T16:16:45.927702/fig_1024_1_copyout_getelems.png b/combined/jmh_2026-01-05T16:16:45.927702/fig_1024_1_copyout_getelems.png new file mode 100644 index 0000000..5bc10a5 Binary files /dev/null and b/combined/jmh_2026-01-05T16:16:45.927702/fig_1024_1_copyout_getelems.png differ diff --git a/combined/jmh_2026-01-05T16:16:45.927702/fig_1024_1_copyout_ind.png b/combined/jmh_2026-01-05T16:16:45.927702/fig_1024_1_copyout_ind.png new file mode 100644 index 0000000..6410c80 Binary files /dev/null and b/combined/jmh_2026-01-05T16:16:45.927702/fig_1024_1_copyout_ind.png differ diff --git a/combined/jmh_2026-01-05T16:16:45.927702/fig_1024_1_copyout_nopoolbig.png b/combined/jmh_2026-01-05T16:16:45.927702/fig_1024_1_copyout_nopoolbig.png new file mode 100644 index 0000000..cda08d8 Binary files /dev/null and b/combined/jmh_2026-01-05T16:16:45.927702/fig_1024_1_copyout_nopoolbig.png differ diff --git a/combined/jmh_2026-01-05T16:16:45.927702/fig_1024_1_copyout_nopoolsmall.png b/combined/jmh_2026-01-05T16:16:45.927702/fig_1024_1_copyout_nopoolsmall.png new file mode 100644 index 0000000..70c11c9 Binary files /dev/null and b/combined/jmh_2026-01-05T16:16:45.927702/fig_1024_1_copyout_nopoolsmall.png differ diff --git a/combined/jmh_2026-01-05T16:16:45.927702/fig_1024_1_copyout_setreg.png b/combined/jmh_2026-01-05T16:16:45.927702/fig_1024_1_copyout_setreg.png new file mode 100644 index 0000000..3cb3297 Binary files /dev/null and b/combined/jmh_2026-01-05T16:16:45.927702/fig_1024_1_copyout_setreg.png differ diff --git a/combined/jmh_2026-01-05T16:16:45.927702/fig_1024_1_none_allbig.png b/combined/jmh_2026-01-05T16:16:45.927702/fig_1024_1_none_allbig.png new file mode 100644 index 0000000..7dce458 Binary files /dev/null and b/combined/jmh_2026-01-05T16:16:45.927702/fig_1024_1_none_allbig.png differ diff --git a/combined/jmh_2026-01-05T16:16:45.927702/fig_1024_1_none_allsmall.png b/combined/jmh_2026-01-05T16:16:45.927702/fig_1024_1_none_allsmall.png new file mode 100644 index 0000000..8fe8c5a Binary files /dev/null and b/combined/jmh_2026-01-05T16:16:45.927702/fig_1024_1_none_allsmall.png differ diff --git a/combined/jmh_2026-01-05T16:16:45.927702/fig_1024_1_none_ba.png b/combined/jmh_2026-01-05T16:16:45.927702/fig_1024_1_none_ba.png new file mode 100644 index 0000000..f5eecce Binary files /dev/null and b/combined/jmh_2026-01-05T16:16:45.927702/fig_1024_1_none_ba.png differ diff --git a/combined/jmh_2026-01-05T16:16:45.927702/fig_1024_1_none_bb.png b/combined/jmh_2026-01-05T16:16:45.927702/fig_1024_1_none_bb.png new file mode 100644 index 0000000..99614b3 Binary files /dev/null and b/combined/jmh_2026-01-05T16:16:45.927702/fig_1024_1_none_bb.png differ diff --git a/combined/jmh_2026-01-05T16:16:45.927702/fig_1024_1_none_crit.png b/combined/jmh_2026-01-05T16:16:45.927702/fig_1024_1_none_crit.png new file mode 100644 index 0000000..7f94867 Binary files /dev/null and b/combined/jmh_2026-01-05T16:16:45.927702/fig_1024_1_none_crit.png differ diff --git a/combined/jmh_2026-01-05T16:16:45.927702/fig_1024_1_none_dir.png b/combined/jmh_2026-01-05T16:16:45.927702/fig_1024_1_none_dir.png new file mode 100644 index 0000000..1351e8f Binary files /dev/null and b/combined/jmh_2026-01-05T16:16:45.927702/fig_1024_1_none_dir.png differ diff --git a/combined/jmh_2026-01-05T16:16:45.927702/fig_1024_1_none_getelems.png b/combined/jmh_2026-01-05T16:16:45.927702/fig_1024_1_none_getelems.png new file mode 100644 index 0000000..e4d057e Binary files /dev/null and b/combined/jmh_2026-01-05T16:16:45.927702/fig_1024_1_none_getelems.png differ diff --git a/combined/jmh_2026-01-05T16:16:45.927702/fig_1024_1_none_ind.png b/combined/jmh_2026-01-05T16:16:45.927702/fig_1024_1_none_ind.png new file mode 100644 index 0000000..1f4183f Binary files /dev/null and b/combined/jmh_2026-01-05T16:16:45.927702/fig_1024_1_none_ind.png differ diff --git a/combined/jmh_2026-01-05T16:16:45.927702/fig_1024_1_none_nopoolbig.png b/combined/jmh_2026-01-05T16:16:45.927702/fig_1024_1_none_nopoolbig.png new file mode 100644 index 0000000..eea70df Binary files /dev/null and b/combined/jmh_2026-01-05T16:16:45.927702/fig_1024_1_none_nopoolbig.png differ diff --git a/combined/jmh_2026-01-05T16:16:45.927702/fig_1024_1_none_nopoolsmall.png b/combined/jmh_2026-01-05T16:16:45.927702/fig_1024_1_none_nopoolsmall.png new file mode 100644 index 0000000..6d77984 Binary files /dev/null and b/combined/jmh_2026-01-05T16:16:45.927702/fig_1024_1_none_nopoolsmall.png differ diff --git a/combined/jmh_2026-01-05T16:16:45.927702/fig_1024_1_none_setreg.png b/combined/jmh_2026-01-05T16:16:45.927702/fig_1024_1_none_setreg.png new file mode 100644 index 0000000..ca8bc0a Binary files /dev/null and b/combined/jmh_2026-01-05T16:16:45.927702/fig_1024_1_none_setreg.png differ diff --git a/combined/jmh_2026-01-05T16:16:45.927702/jmh_2026-01-05T16:16:45.927702.md b/combined/jmh_2026-01-05T16:16:45.927702/jmh_2026-01-05T16:16:45.927702.md new file mode 100644 index 0000000..46ac362 --- /dev/null +++ b/combined/jmh_2026-01-05T16:16:45.927702/jmh_2026-01-05T16:16:45.927702.md @@ -0,0 +1,45 @@ +## JMH Run +This JMH run was generated on 2026-01-05T16:16:45.927702 +#### Config +The configuration was read from `/home/rklein/jni-benchmarks/jmh_tiny_get_java21.json` +```json +{ + "benchmark": "GetJNIBenchmark", + "jvmargs": [ + "Xmx4G", + "XX:ErrorFile=./results/hs_err_pid%p.log", + "XX:+HeapDumpOnOutOfMemoryError", + "-enable-preview" + ], + "params": { + "valueSize": [ + 50, + 1024, + 4096, + 16384 + ], + "cacheMB": [ + 1 + ], + "checksum": [ + "none", + "copyout" + ] + }, + "options": { + "batchsize": 1, + "warmupiterations": 5, + "warmuptime": "10ms", + "iterations": 5, + "time": "50ms" + }, + "result.path": "./results", + "java.library.path": "target/jni-benchmarks-1.0.1-SNAPSHOT-application/jni-benchmarks-1.0.1-SNAPSHOT/lib", + "jar": "target/jni-benchmarks-1.0.1-SNAPSHOT-benchmarks.nar" +} +``` +#### Command +The java command executed to run the tests +``` +java -Xmx4G -XX:ErrorFile=./results/hs_err_pid%p.log -XX:+HeapDumpOnOutOfMemoryError --enable-preview -Djava.library.path=target/jni-benchmarks-1.0.1-SNAPSHOT-application/jni-benchmarks-1.0.1-SNAPSHOT/lib -jar target/jni-benchmarks-1.0.1-SNAPSHOT-benchmarks.nar GetJNIBenchmark -p valueSize=50,1024,4096,16384 -p cacheMB=1 -p checksum=none,copyout -bs 1 -wi 5 -w 10ms -i 5 -r 50ms -rff results/jmh_2026-01-05T16:16:45.927702/jmh_2026-01-05T16:16:45.927702.csv +``` diff --git a/combined/jmh_2026-01-05T16:16:45.927702/system_info.json b/combined/jmh_2026-01-05T16:16:45.927702/system_info.json new file mode 100644 index 0000000..612aabf --- /dev/null +++ b/combined/jmh_2026-01-05T16:16:45.927702/system_info.json @@ -0,0 +1,3 @@ +{ + "system_info": "x86_64 - Intel(R) Xeon(R) CPU E5-1650 v3 @ 3.50GHz - 125GB RAM - Ubuntu 24.04.3 LTS - Kernel: 6.14.0-36-generic - openjdk version \"21.0.9\" 2025-10-21" +} \ No newline at end of file diff --git a/combined/revisedTitles/fig_1024_1_copyout_allbig.png b/combined/revisedTitles/fig_1024_1_copyout_allbig.png new file mode 100644 index 0000000..474f636 Binary files /dev/null and b/combined/revisedTitles/fig_1024_1_copyout_allbig.png differ diff --git a/combined/revisedTitles/fig_1024_1_copyout_allsmall.png b/combined/revisedTitles/fig_1024_1_copyout_allsmall.png new file mode 100644 index 0000000..8d56a9e Binary files /dev/null and b/combined/revisedTitles/fig_1024_1_copyout_allsmall.png differ diff --git a/combined/revisedTitles/fig_1024_1_copyout_ba.png b/combined/revisedTitles/fig_1024_1_copyout_ba.png new file mode 100644 index 0000000..f8f24fa Binary files /dev/null and b/combined/revisedTitles/fig_1024_1_copyout_ba.png differ diff --git a/combined/revisedTitles/fig_1024_1_copyout_bb.png b/combined/revisedTitles/fig_1024_1_copyout_bb.png new file mode 100644 index 0000000..b561679 Binary files /dev/null and b/combined/revisedTitles/fig_1024_1_copyout_bb.png differ diff --git a/combined/revisedTitles/fig_1024_1_copyout_crit.png b/combined/revisedTitles/fig_1024_1_copyout_crit.png new file mode 100644 index 0000000..dcf21b3 Binary files /dev/null and b/combined/revisedTitles/fig_1024_1_copyout_crit.png differ diff --git a/combined/revisedTitles/fig_1024_1_copyout_dir.png b/combined/revisedTitles/fig_1024_1_copyout_dir.png new file mode 100644 index 0000000..d5a3a3a Binary files /dev/null and b/combined/revisedTitles/fig_1024_1_copyout_dir.png differ diff --git a/combined/revisedTitles/fig_1024_1_copyout_getelems.png b/combined/revisedTitles/fig_1024_1_copyout_getelems.png new file mode 100644 index 0000000..26a6905 Binary files /dev/null and b/combined/revisedTitles/fig_1024_1_copyout_getelems.png differ diff --git a/combined/revisedTitles/fig_1024_1_copyout_ind.png b/combined/revisedTitles/fig_1024_1_copyout_ind.png new file mode 100644 index 0000000..07e35b7 Binary files /dev/null and b/combined/revisedTitles/fig_1024_1_copyout_ind.png differ diff --git a/combined/revisedTitles/fig_1024_1_copyout_nopoolbig.png b/combined/revisedTitles/fig_1024_1_copyout_nopoolbig.png new file mode 100644 index 0000000..1518876 Binary files /dev/null and b/combined/revisedTitles/fig_1024_1_copyout_nopoolbig.png differ diff --git a/combined/revisedTitles/fig_1024_1_copyout_nopoolsmall.png b/combined/revisedTitles/fig_1024_1_copyout_nopoolsmall.png new file mode 100644 index 0000000..8af6d3a Binary files /dev/null and b/combined/revisedTitles/fig_1024_1_copyout_nopoolsmall.png differ diff --git a/combined/revisedTitles/fig_1024_1_copyout_setreg.png b/combined/revisedTitles/fig_1024_1_copyout_setreg.png new file mode 100644 index 0000000..0550c19 Binary files /dev/null and b/combined/revisedTitles/fig_1024_1_copyout_setreg.png differ diff --git a/combined/revisedTitles/fig_1024_1_none_allbig.png b/combined/revisedTitles/fig_1024_1_none_allbig.png new file mode 100644 index 0000000..e44bf7e Binary files /dev/null and b/combined/revisedTitles/fig_1024_1_none_allbig.png differ diff --git a/combined/revisedTitles/fig_1024_1_none_allsmall.png b/combined/revisedTitles/fig_1024_1_none_allsmall.png new file mode 100644 index 0000000..1b4f3e0 Binary files /dev/null and b/combined/revisedTitles/fig_1024_1_none_allsmall.png differ diff --git a/combined/revisedTitles/fig_1024_1_none_ba.png b/combined/revisedTitles/fig_1024_1_none_ba.png new file mode 100644 index 0000000..bb303dc Binary files /dev/null and b/combined/revisedTitles/fig_1024_1_none_ba.png differ diff --git a/combined/revisedTitles/fig_1024_1_none_bb.png b/combined/revisedTitles/fig_1024_1_none_bb.png new file mode 100644 index 0000000..70477e1 Binary files /dev/null and b/combined/revisedTitles/fig_1024_1_none_bb.png differ diff --git a/combined/revisedTitles/fig_1024_1_none_crit.png b/combined/revisedTitles/fig_1024_1_none_crit.png new file mode 100644 index 0000000..2832372 Binary files /dev/null and b/combined/revisedTitles/fig_1024_1_none_crit.png differ diff --git a/combined/revisedTitles/fig_1024_1_none_dir.png b/combined/revisedTitles/fig_1024_1_none_dir.png new file mode 100644 index 0000000..26b15f3 Binary files /dev/null and b/combined/revisedTitles/fig_1024_1_none_dir.png differ diff --git a/combined/revisedTitles/fig_1024_1_none_getelems.png b/combined/revisedTitles/fig_1024_1_none_getelems.png new file mode 100644 index 0000000..6a544d3 Binary files /dev/null and b/combined/revisedTitles/fig_1024_1_none_getelems.png differ diff --git a/combined/revisedTitles/fig_1024_1_none_ind.png b/combined/revisedTitles/fig_1024_1_none_ind.png new file mode 100644 index 0000000..d438671 Binary files /dev/null and b/combined/revisedTitles/fig_1024_1_none_ind.png differ diff --git a/combined/revisedTitles/fig_1024_1_none_nopoolbig.png b/combined/revisedTitles/fig_1024_1_none_nopoolbig.png new file mode 100644 index 0000000..91583b7 Binary files /dev/null and b/combined/revisedTitles/fig_1024_1_none_nopoolbig.png differ diff --git a/combined/revisedTitles/fig_1024_1_none_nopoolsmall.png b/combined/revisedTitles/fig_1024_1_none_nopoolsmall.png new file mode 100644 index 0000000..17530a1 Binary files /dev/null and b/combined/revisedTitles/fig_1024_1_none_nopoolsmall.png differ diff --git a/combined/revisedTitles/fig_1024_1_none_setreg.png b/combined/revisedTitles/fig_1024_1_none_setreg.png new file mode 100644 index 0000000..c3fdfc6 Binary files /dev/null and b/combined/revisedTitles/fig_1024_1_none_setreg.png differ diff --git a/combined/threeJavasMarked.zip b/combined/threeJavasMarked.zip new file mode 100644 index 0000000..4acc3e2 Binary files /dev/null and b/combined/threeJavasMarked.zip differ diff --git a/combined/threeJavasMarked/fig_1024_1_copyout_allbig.png b/combined/threeJavasMarked/fig_1024_1_copyout_allbig.png new file mode 100644 index 0000000..1d59758 Binary files /dev/null and b/combined/threeJavasMarked/fig_1024_1_copyout_allbig.png differ diff --git a/combined/threeJavasMarked/fig_1024_1_copyout_allsmall.png b/combined/threeJavasMarked/fig_1024_1_copyout_allsmall.png new file mode 100644 index 0000000..e45d23a Binary files /dev/null and b/combined/threeJavasMarked/fig_1024_1_copyout_allsmall.png differ diff --git a/combined/threeJavasMarked/fig_1024_1_copyout_ba.png b/combined/threeJavasMarked/fig_1024_1_copyout_ba.png new file mode 100644 index 0000000..eb053d1 Binary files /dev/null and b/combined/threeJavasMarked/fig_1024_1_copyout_ba.png differ diff --git a/combined/threeJavasMarked/fig_1024_1_copyout_bb.png b/combined/threeJavasMarked/fig_1024_1_copyout_bb.png new file mode 100644 index 0000000..5d17476 Binary files /dev/null and b/combined/threeJavasMarked/fig_1024_1_copyout_bb.png differ diff --git a/combined/threeJavasMarked/fig_1024_1_copyout_crit.png b/combined/threeJavasMarked/fig_1024_1_copyout_crit.png new file mode 100644 index 0000000..c1c9e22 Binary files /dev/null and b/combined/threeJavasMarked/fig_1024_1_copyout_crit.png differ diff --git a/combined/threeJavasMarked/fig_1024_1_copyout_dir.png b/combined/threeJavasMarked/fig_1024_1_copyout_dir.png new file mode 100644 index 0000000..517f07c Binary files /dev/null and b/combined/threeJavasMarked/fig_1024_1_copyout_dir.png differ diff --git a/combined/threeJavasMarked/fig_1024_1_copyout_getelems.png b/combined/threeJavasMarked/fig_1024_1_copyout_getelems.png new file mode 100644 index 0000000..0c0103c Binary files /dev/null and b/combined/threeJavasMarked/fig_1024_1_copyout_getelems.png differ diff --git a/combined/threeJavasMarked/fig_1024_1_copyout_ind.png b/combined/threeJavasMarked/fig_1024_1_copyout_ind.png new file mode 100644 index 0000000..cf03dd5 Binary files /dev/null and b/combined/threeJavasMarked/fig_1024_1_copyout_ind.png differ diff --git a/combined/threeJavasMarked/fig_1024_1_copyout_nopoolbig.png b/combined/threeJavasMarked/fig_1024_1_copyout_nopoolbig.png new file mode 100644 index 0000000..32833af Binary files /dev/null and b/combined/threeJavasMarked/fig_1024_1_copyout_nopoolbig.png differ diff --git a/combined/threeJavasMarked/fig_1024_1_copyout_nopoolsmall.png b/combined/threeJavasMarked/fig_1024_1_copyout_nopoolsmall.png new file mode 100644 index 0000000..f38e9c8 Binary files /dev/null and b/combined/threeJavasMarked/fig_1024_1_copyout_nopoolsmall.png differ diff --git a/combined/threeJavasMarked/fig_1024_1_copyout_setreg.png b/combined/threeJavasMarked/fig_1024_1_copyout_setreg.png new file mode 100644 index 0000000..f9172c3 Binary files /dev/null and b/combined/threeJavasMarked/fig_1024_1_copyout_setreg.png differ diff --git a/combined/threeJavasMarked/fig_1024_1_none_allbig.png b/combined/threeJavasMarked/fig_1024_1_none_allbig.png new file mode 100644 index 0000000..3a161ef Binary files /dev/null and b/combined/threeJavasMarked/fig_1024_1_none_allbig.png differ diff --git a/combined/threeJavasMarked/fig_1024_1_none_allsmall.png b/combined/threeJavasMarked/fig_1024_1_none_allsmall.png new file mode 100644 index 0000000..4b27c96 Binary files /dev/null and b/combined/threeJavasMarked/fig_1024_1_none_allsmall.png differ diff --git a/combined/threeJavasMarked/fig_1024_1_none_ba.png b/combined/threeJavasMarked/fig_1024_1_none_ba.png new file mode 100644 index 0000000..a679279 Binary files /dev/null and b/combined/threeJavasMarked/fig_1024_1_none_ba.png differ diff --git a/combined/threeJavasMarked/fig_1024_1_none_bb.png b/combined/threeJavasMarked/fig_1024_1_none_bb.png new file mode 100644 index 0000000..de5ec28 Binary files /dev/null and b/combined/threeJavasMarked/fig_1024_1_none_bb.png differ diff --git a/combined/threeJavasMarked/fig_1024_1_none_crit.png b/combined/threeJavasMarked/fig_1024_1_none_crit.png new file mode 100644 index 0000000..ae8e2dc Binary files /dev/null and b/combined/threeJavasMarked/fig_1024_1_none_crit.png differ diff --git a/combined/threeJavasMarked/fig_1024_1_none_dir.png b/combined/threeJavasMarked/fig_1024_1_none_dir.png new file mode 100644 index 0000000..44dc72e Binary files /dev/null and b/combined/threeJavasMarked/fig_1024_1_none_dir.png differ diff --git a/combined/threeJavasMarked/fig_1024_1_none_getelems.png b/combined/threeJavasMarked/fig_1024_1_none_getelems.png new file mode 100644 index 0000000..0b0d481 Binary files /dev/null and b/combined/threeJavasMarked/fig_1024_1_none_getelems.png differ diff --git a/combined/threeJavasMarked/fig_1024_1_none_ind.png b/combined/threeJavasMarked/fig_1024_1_none_ind.png new file mode 100644 index 0000000..edf238c Binary files /dev/null and b/combined/threeJavasMarked/fig_1024_1_none_ind.png differ diff --git a/combined/threeJavasMarked/fig_1024_1_none_nopoolbig.png b/combined/threeJavasMarked/fig_1024_1_none_nopoolbig.png new file mode 100644 index 0000000..a84bb16 Binary files /dev/null and b/combined/threeJavasMarked/fig_1024_1_none_nopoolbig.png differ diff --git a/combined/threeJavasMarked/fig_1024_1_none_nopoolsmall.png b/combined/threeJavasMarked/fig_1024_1_none_nopoolsmall.png new file mode 100644 index 0000000..2f7e9ce Binary files /dev/null and b/combined/threeJavasMarked/fig_1024_1_none_nopoolsmall.png differ diff --git a/combined/threeJavasMarked/fig_1024_1_none_setreg.png b/combined/threeJavasMarked/fig_1024_1_none_setreg.png new file mode 100644 index 0000000..05cda55 Binary files /dev/null and b/combined/threeJavasMarked/fig_1024_1_none_setreg.png differ diff --git a/src/main/c++/bytearray/GetByteArray.cpp b/src/main/c++/bytearray/GetByteArray.cpp index a0586ef..94a8688 100644 --- a/src/main/c++/bytearray/GetByteArray.cpp +++ b/src/main/c++/bytearray/GetByteArray.cpp @@ -58,23 +58,33 @@ static const auto DB_READ_MOCK = std::unordered_map{ {"testKeyWithReturnValueSize0131072Bytes", STR_128_KB}, {"testKeyWithReturnValueSize0262144Bytes", STR_256_KB}}; -const std::string &GetByteArrayInternal(const char *key) -{ - std::string str(key, 38); - - //std::cerr << std::endl << "Getting " << str << std::endl << std::endl; - return DB_READ_MOCK.at(str); -} - -struct WriteKey -{ - std::string key; - size_t length; - - WriteKey(const std::string &key, size_t length) : key(key, 38), length(length) - { - } -}; +static const std::string &GetByteArrayInternal(const char *key) +{ + std::string str(key, 38); + + //std::cerr << std::endl << "Getting " << str << std::endl << std::endl; + return DB_READ_MOCK.at(str); +} + +const std::string &GetByteArrayInternalWithLength(const char *key, size_t key_len) +{ + std::string str(key, key_len); + return DB_READ_MOCK.at(str); +} + +struct WriteKey +{ + std::string key; + size_t length; + + WriteKey(const std::string &key, size_t length) : key(key), length(length) + { + } + + WriteKey(const char *key_ptr, size_t key_len, size_t length) : key(key_ptr, key_len), length(length) + { + } +}; bool operator==(const WriteKey &lhs, const WriteKey &rhs) { @@ -98,17 +108,29 @@ namespace std static auto DB_WRITE_MOCK = std::unordered_map(); -char *GetByteArrayInternalForWrite(const char *key, size_t size) -{ - auto writeKey = WriteKey(key, size); - auto it = DB_WRITE_MOCK.find(writeKey); +static char *GetByteArrayInternalForWrite(const char *key, size_t size) +{ + auto writeKey = WriteKey(key, 38, size); + auto it = DB_WRITE_MOCK.find(writeKey); if (it == DB_WRITE_MOCK.end()) { DB_WRITE_MOCK[writeKey] = new char[size]; it = DB_WRITE_MOCK.find(writeKey); - } - return it->second; -} + } + return it->second; +} + +char *GetByteArrayInternalForWriteWithLength(const char *key, size_t key_len, size_t size) +{ + auto writeKey = WriteKey(key, key_len, size); + auto it = DB_WRITE_MOCK.find(writeKey); + if (it == DB_WRITE_MOCK.end()) + { + DB_WRITE_MOCK[writeKey] = new char[size]; + it = DB_WRITE_MOCK.find(writeKey); + } + return it->second; +} jclass g_jbyte_buffer_clazz; jmethodID g_jbyte_buffer_array_mid; diff --git a/src/main/c++/bytearray/Portal.h b/src/main/c++/bytearray/Portal.h deleted file mode 100644 index 5b04e36..0000000 --- a/src/main/c++/bytearray/Portal.h +++ /dev/null @@ -1,112 +0,0 @@ -/** - * Copyright © 2016, Evolved Binary Ltd - * 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 the 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 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. - */ -#include - -#include - -extern jclass g_jbyte_buffer_clazz; -extern jmethodID g_jbyte_buffer_array_mid; -extern jmethodID g_jbyte_buffer_allocate_mid; - -inline jbyteArray StringToJavaByteArray(JNIEnv *env, const std::string& str) { - const jsize jlen = static_cast(str.size()); - jbyteArray jbytes = env->NewByteArray(jlen); - if(jbytes == nullptr) { - // exception thrown: OutOfMemoryError - return nullptr; - } - - env->SetByteArrayRegion(jbytes, 0, jlen, - const_cast(reinterpret_cast(str.c_str()))); - if(env->ExceptionCheck()) { - // exception thrown: ArrayIndexOutOfBoundsException - env->DeleteLocalRef(jbytes); - return nullptr; - } - - return jbytes; -} - -inline void SetByteBufferData(JNIEnv* env, const jmethodID jarray_mid, const jobject& jbuf, - const char* content, const size_t content_len) { - jbyteArray jarray = static_cast(env->CallObjectMethod(jbuf, jarray_mid)); - if (env->ExceptionCheck()) { - // exception occurred - env->DeleteLocalRef(jbuf); - return; - } - - jboolean is_copy = JNI_FALSE; - jbyte* ja = reinterpret_cast( - env->GetPrimitiveArrayCritical(jarray, &is_copy)); - if (ja == nullptr) { - // exception occurred - env->DeleteLocalRef(jarray); - env->DeleteLocalRef(jbuf); - return; - } - - memcpy(ja, const_cast(content), content_len); - - env->ReleasePrimitiveArrayCritical(jarray, ja, is_copy ? 0 : JNI_ABORT); - - env->DeleteLocalRef(jarray); -} - -inline jobject NewByteBuffer(JNIEnv* env, const size_t capacity, const char* content) { - - const jobject jbuf = env->CallStaticObjectMethod( - g_jbyte_buffer_clazz, g_jbyte_buffer_allocate_mid, static_cast(capacity)); - if (env->ExceptionCheck()) { - // exception occurred - return nullptr; - } - - // Set buffer data - if (content != nullptr) { - SetByteBufferData(env, g_jbyte_buffer_array_mid, jbuf, content, capacity); - } - - return jbuf; -} - -inline jobject NewDirectByteBuffer(JNIEnv* env, const size_t capacity, const char* content) { - bool allocated = false; - if (content == nullptr) { - content = new char[capacity]; - allocated = true; - } - jobject jbuf = env->NewDirectByteBuffer(const_cast(content), static_cast(capacity)); - if (jbuf == nullptr) { - // exception occurred - if (allocated) { - delete[] static_cast(content); - } - return nullptr; - } - return jbuf; -} \ No newline at end of file diff --git a/src/main/c++/call/Portal.h b/src/main/c++/call/Portal.h index ed07332..b984474 100644 --- a/src/main/c++/call/Portal.h +++ b/src/main/c++/call/Portal.h @@ -27,6 +27,95 @@ #include #include +#include +#include + +extern jclass g_jbyte_buffer_clazz; +extern jmethodID g_jbyte_buffer_array_mid; +extern jmethodID g_jbyte_buffer_allocate_mid; + +const std::string &GetByteArrayInternalWithLength(const char *key, size_t key_len); +char *GetByteArrayInternalForWriteWithLength(const char *key, size_t key_len, size_t len); + +inline jbyteArray StringToJavaByteArray(JNIEnv *env, const std::string& str) { + const jsize jlen = static_cast(str.size()); + jbyteArray jbytes = env->NewByteArray(jlen); + if(jbytes == nullptr) { + // exception thrown: OutOfMemoryError + return nullptr; + } + + env->SetByteArrayRegion(jbytes, 0, jlen, + const_cast(reinterpret_cast(str.c_str()))); + if(env->ExceptionCheck()) { + // exception thrown: ArrayIndexOutOfBoundsException + env->DeleteLocalRef(jbytes); + return nullptr; + } + + return jbytes; +} + +inline void SetByteBufferData(JNIEnv* env, const jmethodID jarray_mid, const jobject& jbuf, + const char* content, const size_t content_len) { + jbyteArray jarray = static_cast(env->CallObjectMethod(jbuf, jarray_mid)); + if (env->ExceptionCheck()) { + // exception occurred + env->DeleteLocalRef(jbuf); + return; + } + + jboolean is_copy = JNI_FALSE; + jbyte* ja = reinterpret_cast( + env->GetPrimitiveArrayCritical(jarray, &is_copy)); + if (ja == nullptr) { + // exception occurred + env->DeleteLocalRef(jarray); + env->DeleteLocalRef(jbuf); + return; + } + + memcpy(ja, const_cast(content), content_len); + + env->ReleasePrimitiveArrayCritical(jarray, ja, is_copy ? 0 : JNI_ABORT); + + env->DeleteLocalRef(jarray); +} + +inline jobject NewByteBuffer(JNIEnv* env, const size_t capacity, const char* content) { + + const jobject jbuf = env->CallStaticObjectMethod( + g_jbyte_buffer_clazz, g_jbyte_buffer_allocate_mid, static_cast(capacity)); + if (env->ExceptionCheck()) { + // exception occurred + return nullptr; + } + + // Set buffer data + if (content != nullptr) { + SetByteBufferData(env, g_jbyte_buffer_array_mid, jbuf, content, capacity); + } + + return jbuf; +} + +inline jobject NewDirectByteBuffer(JNIEnv* env, const size_t capacity, const char* content) { + bool allocated = false; + if (content == nullptr) { + content = new char[capacity]; + allocated = true; + } + jobject jbuf = env->NewDirectByteBuffer(const_cast(content), static_cast(capacity)); + if (jbuf == nullptr) { + // exception occurred + if (allocated) { + delete[] static_cast(content); + } + return nullptr; + } + return jbuf; +} + namespace jnibench { // Native class template @@ -81,4 +170,4 @@ class FooByCallInvokeFinalJni : public FooJniClass(jkey_len)); delete[] key; return nullptr; @@ -94,7 +86,7 @@ jobject Java_com_evolvedbinary_jnibench_common_getputjni_GetPutJNI_getIntoDirect { return nullptr; } - std::string cvalue = GetByteArrayInternal(key); + std::string cvalue = GetByteArrayInternalWithLength(key, static_cast(jkey_len)); delete[] key; void *buffer_memory = reinterpret_cast(jval_unsafe_handle); @@ -118,7 +110,7 @@ jint Java_com_evolvedbinary_jnibench_common_getputjni_GetPutJNI_getIntoUnsafe(JN { return kError; } - std::string cvalue = GetByteArrayInternal(key); + std::string cvalue = GetByteArrayInternalWithLength(key, static_cast(jkey_len)); delete[] key; void *buffer_memory = reinterpret_cast(jval_unsafe_handle); @@ -140,7 +132,7 @@ jint Java_com_evolvedbinary_jnibench_common_getputjni_GetPutJNI_putFromUnsafe(JN { return kError; } - char *db_buf = GetByteArrayInternalForWrite(key, jval_len); + char *db_buf = GetByteArrayInternalForWriteWithLength(key, static_cast(jkey_len), static_cast(jval_len)); delete[] key; void *buffer_memory = reinterpret_cast(jval_unsafe_handle); @@ -161,7 +153,7 @@ jint Java_com_evolvedbinary_jnibench_common_getputjni_GetPutJNI_getIntoDirectByt { return kError; } - std::string cvalue = GetByteArrayInternal(key); + std::string cvalue = GetByteArrayInternalWithLength(key, static_cast(jkey_len)); delete[] key; char *byte_buffer = reinterpret_cast(env->GetDirectBufferAddress(jval_byte_buffer)); @@ -193,7 +185,7 @@ jint Java_com_evolvedbinary_jnibench_common_getputjni_GetPutJNI_putFromDirectByt { return kError; } - char *db_buf = GetByteArrayInternalForWrite(key, jval_len); + char *db_buf = GetByteArrayInternalForWriteWithLength(key, static_cast(jkey_len), static_cast(jval_len)); delete[] key; char *byte_buffer = reinterpret_cast(env->GetDirectBufferAddress(jval_byte_buffer)); @@ -225,7 +217,7 @@ jint Java_com_evolvedbinary_jnibench_common_getputjni_GetPutJNI_getIntoByteArray { return kError; } - std::string cvalue = GetByteArrayInternal(key); + std::string cvalue = GetByteArrayInternalWithLength(key, static_cast(jkey_len)); delete[] key; size_t get_size = std::min(static_cast(jval_len), cvalue.size()); @@ -246,7 +238,7 @@ jint Java_com_evolvedbinary_jnibench_common_getputjni_GetPutJNI_putFromByteArray { return kError; } - char *db_buf = GetByteArrayInternalForWrite(key, jval_len); + char *db_buf = GetByteArrayInternalForWriteWithLength(key, static_cast(jkey_len), static_cast(jval_len)); delete[] key; env->GetByteArrayRegion(jval_byte_array, 0, jval_len, const_cast(reinterpret_cast(db_buf))); @@ -266,7 +258,7 @@ jint Java_com_evolvedbinary_jnibench_common_getputjni_GetPutJNI_getIntoByteArray { return kError; } - std::string cvalue = GetByteArrayInternal(key); + std::string cvalue = GetByteArrayInternalWithLength(key, static_cast(jkey_len)); delete[] key; jboolean is_copy; @@ -290,7 +282,7 @@ jint Java_com_evolvedbinary_jnibench_common_getputjni_GetPutJNI_putFromByteArray { return kError; } - char *db_buf = GetByteArrayInternalForWrite(key, jval_len); + char *db_buf = GetByteArrayInternalForWriteWithLength(key, static_cast(jkey_len), static_cast(jval_len)); delete[] key; jboolean is_copy; @@ -313,7 +305,7 @@ jint Java_com_evolvedbinary_jnibench_common_getputjni_GetPutJNI_getIntoByteArray { return kError; } - std::string cvalue = GetByteArrayInternal(key); + std::string cvalue = GetByteArrayInternalWithLength(key, static_cast(jkey_len)); delete[] key; jboolean is_copy; @@ -337,7 +329,7 @@ jint Java_com_evolvedbinary_jnibench_common_getputjni_GetPutJNI_putFromByteArray { return kError; } - char *db_buf = GetByteArrayInternalForWrite(key, jval_len); + char *db_buf = GetByteArrayInternalForWriteWithLength(key, static_cast(jkey_len), static_cast(jval_len)); delete[] key; jboolean is_copy; @@ -361,7 +353,7 @@ jint Java_com_evolvedbinary_jnibench_common_getputjni_GetPutJNI_getIntoIndirectB { return kError; } - std::string cvalue = GetByteArrayInternal(key); + std::string cvalue = GetByteArrayInternalWithLength(key, static_cast(jkey_len)); delete[] key; jbyteArray buffer_internal_byte_array = static_cast(env->CallObjectMethod(jval_byte_buffer, g_jbyte_buffer_array_mid)); @@ -377,17 +369,18 @@ jint Java_com_evolvedbinary_jnibench_common_getputjni_GetPutJNI_getIntoIndirectB return get_size; } -extern "C" int getIntoMemorySegment(const char* key, char* dest, int dest_len) { - std::string value = GetByteArrayInternal(key); - int size = std::min((int)value.size(), dest_len); - memcpy(dest, value.c_str(), size); - return size; +extern "C" int getIntoMemorySegment(const char* key, int key_len, char* dest, int dest_len) { + const std::string& value = GetByteArrayInternalWithLength(key, static_cast(key_len)); + const auto size = static_cast(std::min(value.size(), static_cast(dest_len))); + memcpy(dest, value.data(), static_cast(size)); + return size; } -extern "C" int putFromMemorySegment(const char* key, const char* src, int src_len) { - char *db_buf = GetByteArrayInternalForWrite(key, src_len); - memcpy(db_buf, src, src_len); - return src_len; +extern "C" int putFromMemorySegment(const char* key, int key_len, const char* src, int src_len) { + char* db_buf = GetByteArrayInternalForWriteWithLength(key, static_cast(key_len), + static_cast(src_len)); + memcpy(db_buf, src, static_cast(src_len)); + return src_len; } /* @@ -403,7 +396,7 @@ jint Java_com_evolvedbinary_jnibench_common_getputjni_GetPutJNI_putFromIndirectB { return kError; } - char *db_buf = GetByteArrayInternalForWrite(key, jval_len); + char *db_buf = GetByteArrayInternalForWriteWithLength(key, static_cast(jkey_len), static_cast(jval_len)); delete[] key; jbyteArray buffer_internal_byte_array = static_cast(env->CallObjectMethod(jval_byte_buffer, g_jbyte_buffer_array_mid)); @@ -431,7 +424,7 @@ jint Java_com_evolvedbinary_jnibench_common_getputjni_GetPutJNI_getIntoIndirectB { return kError; } - std::string cvalue = GetByteArrayInternal(key); + std::string cvalue = GetByteArrayInternalWithLength(key, static_cast(jkey_len)); delete[] key; jbyteArray buffer_internal_byte_array = static_cast(env->CallObjectMethod(jval_byte_buffer, g_jbyte_buffer_array_mid)); @@ -463,7 +456,7 @@ jint Java_com_evolvedbinary_jnibench_common_getputjni_GetPutJNI_putFromIndirectB { return kError; } - char *db_buf = GetByteArrayInternalForWrite(key, jval_len); + char *db_buf = GetByteArrayInternalForWriteWithLength(key, static_cast(jkey_len), static_cast(jval_len)); delete[] key; jbyteArray buffer_internal_byte_array = static_cast(env->CallObjectMethod(jval_byte_buffer, g_jbyte_buffer_array_mid)); @@ -494,7 +487,7 @@ jint Java_com_evolvedbinary_jnibench_common_getputjni_GetPutJNI_getIntoIndirectB { return kError; } - std::string cvalue = GetByteArrayInternal(key); + std::string cvalue = GetByteArrayInternalWithLength(key, static_cast(jkey_len)); delete[] key; jbyteArray buffer_internal_byte_array = static_cast(env->CallObjectMethod(jval_byte_buffer, g_jbyte_buffer_array_mid)); @@ -526,7 +519,7 @@ jint Java_com_evolvedbinary_jnibench_common_getputjni_GetPutJNI_putFromIndirectB { return kError; } - char *db_buf = GetByteArrayInternalForWrite(key, jval_len); + char *db_buf = GetByteArrayInternalForWriteWithLength(key, static_cast(jkey_len), static_cast(jval_len)); delete[] key; jbyteArray buffer_internal_byte_array = static_cast(env->CallObjectMethod(jval_byte_buffer, g_jbyte_buffer_array_mid)); diff --git a/src/main/java21/com/evolvedbinary/jnibench/jmhbench/cache/MemorySegmentCache.java b/src/main/java21/com/evolvedbinary/jnibench/jmhbench/cache/MemorySegmentCache.java deleted file mode 100644 index 9c6079f..0000000 --- a/src/main/java21/com/evolvedbinary/jnibench/jmhbench/cache/MemorySegmentCache.java +++ /dev/null @@ -1,62 +0,0 @@ -package com.evolvedbinary.jnibench.jmhbench.cache; - -import static java.lang.foreign.ValueLayout.JAVA_BYTE; - -import java.lang.foreign.Arena; -import java.lang.foreign.MemorySegment; -import java.lang.foreign.ValueLayout; -import java.util.stream.IntStream; - -public class MemorySegmentCache extends LinkedListAllocationCache { - private final Arena arena; - - public MemorySegmentCache() { - arena = Arena.ofShared(); - } - - - @Override - MemorySegment allocate(final int valueSize) { - return arena.allocate(valueSize); - } - - @Override - void free(final MemorySegment buffer) { - // Nothing to do here, as we override taerdown() directly. - } - - @Override - public void tearDown() { - super.tearDown(); - arena.close(); - } - - @Override - protected int byteChecksum(final MemorySegment item) { - return IntStream.range(0, (int) item.byteSize()).map(offset -> item.get(JAVA_BYTE, offset)).sum(); - } - - @Override - protected int longChecksum(final MemorySegment item) { - return byteChecksum(item); - } - - @Override - protected byte[] copyOut(final MemorySegment item) { - // Get a cached byte array of the correct size - byte[] array = byteArrayOfSize((int) item.byteSize()); - - // Perform bulk copy from native memory to Java heap array - MemorySegment.copy(item, ValueLayout.JAVA_BYTE, 0, array, 0, (int) item.byteSize()); - - return array; - } - - @Override - protected long copyIn(final MemorySegment item, final byte fillByte) { - // Highly optimized bulk fill (native memset equivalent) - item.fill(fillByte); - - return fillByte; - } -} diff --git a/src/main/java25/com/evolvedbinary/jnibench/jmhbench/GetJNIBenchmarkJava25.java b/src/main/java25/com/evolvedbinary/jnibench/jmhbench/GetJNIBenchmarkJava25.java index d961620..0fa24e5 100644 --- a/src/main/java25/com/evolvedbinary/jnibench/jmhbench/GetJNIBenchmarkJava25.java +++ b/src/main/java25/com/evolvedbinary/jnibench/jmhbench/GetJNIBenchmarkJava25.java @@ -55,8 +55,10 @@ public class GetJNIBenchmarkJava25 extends GetJNIBenchmark { FunctionDescriptor.of( ValueLayout.JAVA_INT, ValueLayout.ADDRESS, + ValueLayout.JAVA_INT, ValueLayout.ADDRESS, - ValueLayout.JAVA_INT))) + ValueLayout.JAVA_INT), + Linker.Option.critical(false))) .orElseThrow(); } @@ -114,6 +116,7 @@ public void getIntoMemorySegment(GetJNIBenchmarkStateJava25 benchmarkState, GetJ try { final var size = (int) GET_INTO_MEMORY_SEGMENT_HANDLE.invokeExact( benchmarkState.keyMemorySegment, // Pre-allocated segment for key + benchmarkState.keyBytes.length, segment, benchmarkState.valueSize ); diff --git a/src/main/java25/com/evolvedbinary/jnibench/jmhbench/PutJNIBenchmarkJava25.java b/src/main/java25/com/evolvedbinary/jnibench/jmhbench/PutJNIBenchmarkJava25.java index 345182c..25e67e4 100644 --- a/src/main/java25/com/evolvedbinary/jnibench/jmhbench/PutJNIBenchmarkJava25.java +++ b/src/main/java25/com/evolvedbinary/jnibench/jmhbench/PutJNIBenchmarkJava25.java @@ -55,8 +55,10 @@ public class PutJNIBenchmarkJava25 extends PutJNIBenchmark { FunctionDescriptor.of( ValueLayout.JAVA_INT, ValueLayout.ADDRESS, + ValueLayout.JAVA_INT, ValueLayout.ADDRESS, - ValueLayout.JAVA_INT))) + ValueLayout.JAVA_INT), + Linker.Option.critical(false))) .orElseThrow(); } @@ -117,6 +119,7 @@ public void putFromMemorySegment(PutJNIBenchmarkStateJava25 benchmarkState, PutJ try { final var size = (int) PUT_FROM_MEMORY_SEGMENT_HANDLE.invokeExact( benchmarkState.keyMemorySegment, // Pre-allocated segment for key + benchmarkState.keyBytes.length, segment, benchmarkState.valueSize ); diff --git a/src/main/javaffm/com/evolvedbinary/jnibench/jmhbench/cache/MemorySegmentCache.java b/src/main/javaffm/com/evolvedbinary/jnibench/jmhbench/cache/MemorySegmentCache.java index 2e0e7f4..a263732 100644 --- a/src/main/javaffm/com/evolvedbinary/jnibench/jmhbench/cache/MemorySegmentCache.java +++ b/src/main/javaffm/com/evolvedbinary/jnibench/jmhbench/cache/MemorySegmentCache.java @@ -37,7 +37,7 @@ public class MemorySegmentCache extends LinkedListAllocationCache private final Arena arena; public MemorySegmentCache() { - arena = Arena.ofShared(); + arena = Arena.ofConfined(); }