Currying per se does not have a performance penalty. If f and g are methods defined as
f
g
def f(x: Int)(y: Int) = expr def g(x: Int, y: Int) = expr
then f(x)(y) and g(x, y) are compiled into exactly the same code.
f(x)(y)
g(x, y)