misconception on performance on lazy programs

non-strictness is not a performance feature. There is overhead due to checking what is needed and not needed.

A carefully written strict counter part maybe be asymptotically equivalent in space and runtime efficiency, but more performant eventualy due to that overhead.

Haskell wiki - non-strict semantics

See also: Benefits of laziness?