Reputation: 369
I know how scala by-name parameters work: https://tpolecat.github.io/2014/06/26/call-by-name.html
I'm using it in a very sensitive piece of code that gets run a lot. My questions is: Is there any performance or memory drawback? For example, I know using lazy val has its drawbacks: What's the (hidden) cost of Scala's lazy val?
Is there something similar about by-name parameters? How are they implemented underneath?
Please note I will NOT be using it with lazy for caching. So I wouldn't have that above mentioned problem. I just need to know under the hood it's not using lazy itself.
Thanks
Upvotes: 2
Views: 209
Reputation: 15086
By name parameters are implemented as instances of Function1
. So they also have the same performance characteristics.
Calling a method with a by name parameter has the overhead of creating an instance of Function1
and using the by name parameter has the overhead of calling the method apply
on a Function1
object.
Upvotes: 7