https://github.com/objectionary/benchmark
Java compilation and optimization benchmark that integrates EO, JEO, and Normalizer
https://github.com/objectionary/benchmark
benchmark eolang optimization optimization-algorithms optimizer
Last synced: 9 months ago
JSON representation
Java compilation and optimization benchmark that integrates EO, JEO, and Normalizer
- Host: GitHub
- URL: https://github.com/objectionary/benchmark
- Owner: objectionary
- License: mit
- Created: 2023-12-20T12:37:47.000Z (about 2 years ago)
- Default Branch: master
- Last Pushed: 2024-11-06T05:16:06.000Z (about 1 year ago)
- Last Synced: 2024-11-06T06:17:06.792Z (about 1 year ago)
- Topics: benchmark, eolang, optimization, optimization-algorithms, optimizer
- Language: Java
- Homepage: http://www.objectionary.com/benchmark/
- Size: 376 KB
- Stars: 4
- Watchers: 2
- Forks: 2
- Open Issues: 2
-
Metadata Files:
- Readme: README.md
- License: LICENSE.txt
Awesome Lists containing this project
README
# Stream Fusion Benchmark
[](https://www.elegantobjects.org)
[](https://www.rultor.com/p/objectionary/eo)
[](https://www.jetbrains.com/idea/)
[](https://github.com/objectionary/benchmark/actions/workflows/mvn.yml)
[](LICENSE.txt)
It's a benchmark that puts together:
* [eo-maven-plugin](https://github.com/objectionary/eo)
* [jeo-maven-plugin](https://github.com/objectionary/jeo-maven-plugin)
* [eo-phi-normalizer](https://github.com/objectionary/eo-phi-normalizer)
The goal is to test the performance of Java Stream API before
the "stream fusion" optimization
and after it, then comparing the results. Intermediate artifacts are in this
[`summary.html`](https://www.objectionary.com/benchmark/summary.html).
We partially reuse [the benchmark](https://github.com/biboudis/clashofthelambdas)
earlier suggested by
[Biboudis et al.](https://arxiv.org/abs/1406.6631)
and used by
[Møller et al.](https://dl.acm.org/doi/abs/10.1145/3428236).
This is the summary of the tests performed
by openjdk 23.0.1,
on 2024-11-26
at 11:19,
on Linux with 4 CPUs,
in [this GHA run][benchmark-gha]
(the numbers are in milliseconds):
| Test method | Before | After | Diff | Gain |
| --- | --: | --: | --: | --: |
| [`Big.plain`](https://github.com/objectionary/benchmark/blob/master/src/main/java/org/eolang/benchmark/Big.java) | `32.55` | `34.03` | `+1.48` | `+4%` |
| [`Big.streams`](https://github.com/objectionary/benchmark/blob/master/src/main/java/org/eolang/benchmark/Big.java) | `125.32` | `127.62` | `+2.30` | `+1%` |
| [`Even.plain`](https://github.com/objectionary/benchmark/blob/master/src/main/java/org/eolang/benchmark/Even.java) | `44.96` | `58.41` | `+13.45` | `+29%` |
| [`Even.streams`](https://github.com/objectionary/benchmark/blob/master/src/main/java/org/eolang/benchmark/Even.java) | `67.85` | `67.97` | `+0.11` | `+0%` |
| [`Sum.plain`](https://github.com/objectionary/benchmark/blob/master/src/main/java/org/eolang/benchmark/Sum.java) | `36.95` | `37.89` | `+0.94` | `+2%` |
| [`Sum.streams`](https://github.com/objectionary/benchmark/blob/master/src/main/java/org/eolang/benchmark/Sum.java) | `37.15` | `38.84` | `+1.68` | `+4%` |
The entire test took 384 seconds.
## How to Contribute
Fork repository, make changes, then send us
a [pull request](https://www.yegor256.com/2014/04/15/github-guidelines.html).
We will review your changes and apply them to the `master` branch shortly,
provided they don't violate our quality standards. To avoid frustration,
before sending us your pull request please run full build:
```bash
make
```
You will need [Maven 3.3+](https://maven.apache.org) and Java 11+ installed.
[benchmark-gha]: https://github.com/objectionary/benchmark/actions/runs/12029379206