This repositories contains code discussed in an article I wrote. The article can be found here.
The package loom.generators.mvysny
contains the generator as implemented in mvysny/vaadin-loom. The developer also wrote a nice article explaining how it works.
The package loom.generators.robaho
contains the generator as implemented in robaho/generators. He also provides a synchronous version.
The package loom.generators.sk4is3r
contains a generator implemented by myself. This generator is based on jdk.internal.vm.Continuation
. Later, I figured out that someone else already had this idea and provided a decent implementation of continuations based generators in JDK21. Therefore, I highly recommend that you check out his pedrolamarao/generators-jvm.
Although not explicitly mentioned in my article, the package loom.generators.kelemen
contains another custom implementation of a queue based generator. The article does not cover it, because another queue based generator is already discussed and the implementation depends on a couple of custom 3rd party dependencies. Discussing them is out of scope of the article.
You will need JDK21 to run this project.
I recommend using sdkman, e.g. sdk install java 21.ea.31-open
This project uses gradle 8.2.1.
You can install gradle via homebrew, e.g. brew install gradle
Just run gradle build
.
Note: The loom.generators module requires JDK version 21 with preview features enabled.
The code is located in loom.generators.perf
.
Implementation | avg time |
---|---|
No generator | 3.1 ms |
loom.generators.robaho | 1258.3 ms |
loom.generators.mvysny | 432.5 ms |
loom.generators.sk4is3r | 156.7 ms |
loom.generators.kelemen | 3400.6 ms |