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?