-
Notifications
You must be signed in to change notification settings - Fork 11
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Add cross-compilation support for Scala-2.13.0-M5 #4
base: master
Are you sure you want to change the base?
Conversation
When running benchmarks compiled with Scala 2.13 s.c.i.LazyList will be used instead of the deprecated s.c.i.Stream.
Thank you! I will get this in as soon as I can. |
How does one invoke compilation with one or the other, again? I'd need to be able to generate the benchmark numbers for either version with minimal hassle. |
Prepending a Double plus specifies a single Scala version to use: Since 2.12 is the default, there is no need to do anything extra if that is the version needed. |
Added instructions on how to run these benchmarks on different versions to the README. Also, I don't have access to hardware where I can run the whole benchmark suite without external interference, but here are the 2.12.8:
2.13.0-M5:
Looks like |
Thanks! I'll run these on my own machine too, and see what we see. It's good to see that |
I think the main case for Looks like in 2.13 that use case is even more viable. |
Just as much could be accomplished with |
Absolutely, if access is read-only. But if each thread/execution context needs to make minor changes to its copy of the collection, then arrays quickly get too expensive memory-wise. Speaking of which, don't forget that That's my intuition for I think we both agree that if RAM usage is not a concern, contiguous chunks of memory + |
I updated a few things on |
Since the first Scala 2.13 Release Candidate is coming soon™ and brings with it the reworked collections library, I thought it would be interesting to add 2.13 as a cross target for this project. 2.12 remains the default.
When running benchmarks compiled with Scala 2.13, the newly introduced
s.c.i.LazyList
will be used instead of the deprecateds.c.i.Stream
. In order to keep the diff small and avoid code duplication, this is done by simply aliasingStream
toLazyList
for 2.13 builds. This means that the corresponding benchmarks will still be named "stream*".If there is interest, I was also thinking about adding benchmarks for the new immutable array wrapper
s.c.i.ArraySeq
as well ascats.data.Chain
, which advertises O(1) concat, O(1) append, and amortized O(1) uncons.