Skip to content
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

Replace for with cfor in the Scala code for improved performance #439

Open
ColourGrey opened this issue Nov 26, 2022 · 2 comments
Open

Replace for with cfor in the Scala code for improved performance #439

ColourGrey opened this issue Nov 26, 2022 · 2 comments

Comments

@ColourGrey
Copy link

Numerical for loops in Scala are known to be slower than their counterparts in other languages, and also generate more garbage, because they are implemented as a composition of very high-level language constructs; details can be found here and here, for instance. This is why the Spires library provides the cfor macro, which implements loops in a significantly more efficient way.

With the above rationale, would the maintainers of this repository agree to the replacing of for with cfor, for improved performance of the benchmarked Scala code?

@kostya
Copy link
Owner

kostya commented Dec 11, 2022

We not like such optimizations. We try to use standard language constructs and containers. If for in Scala is slow, is not Scala developers should care about it?

@CoolDalek
Copy link

CoolDalek commented Apr 4, 2023

Performance-sensitive code usually switches to either while-loops or tail recursive functions.
To ensure the optimization of tail recursive functions Scala standard library contains @tailrec annotation.

Scala developers usually don't care about for-loops being slow because they are used mostly for monadic binding (i.e. Scala for-comprehensions are analogues of Haskell do-comprehensions and not just loops).

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants