benchmarks icon indicating copy to clipboard operation
benchmarks copied to clipboard

Replace `for` with `cfor` in the Scala code for improved performance

Open ColourGrey opened this issue 2 years ago • 2 comments

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?

ColourGrey avatar Nov 26 '22 18:11 ColourGrey

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?

kostya avatar Dec 11 '22 06:12 kostya

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).

CoolDalek avatar Apr 04 '23 13:04 CoolDalek