feat: implemented compile time caching for scala 3 #518
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This PR fixes #350 by implementing compile-time caching in the Scala 3 macro by storing the computed string representation of LightTypeTag
Both cached and non‑cached variants now produce full LightTypeTags (not just partial references).
A new benchmark (TagCachingBenchmark) demonstrates the performance difference between the two modes.
We compare the new cached implementation against the previous non‑cached variant using the provided benchmark.
Testing:
In the project root (/path-whatever/izumi-reflect), run: ▸ sbt compile
Run the benchmark: ▸ sbt "runMain benchmarks.TagCachingBenchmark"
Verify that the printed timings show that the cached version is faster after the warm-up
this applies the caching technique to the Scala 3 macro, extending it for full Tag generation, and includes a benchmark that proves the cache’s benefit.
/claim #350