This question basically expands on this question where the answer is that the single argument pipeline operator |> is compiled to the same CIL as the unpiped version. But what about ||> and |||>? MSDN suggests that real tuples are used to wrap the arguments.
But do ||> and |||> really allocate a .NET Tuple to wrap the arguments and then unwrap them again just pass them to a function or is the compiler optimized to handle these operators by just rewriting the CIL like it does with |>?
Update:
Thank you for the answers. It depends on whether the --optimize+ parameter is passed to the F# compiler.
Default release builds in with F# 3.1 in Visual Studio 2013 don't create tuples. Default debug builds do create tuples.