I suppose this shows that the CIL generator for C# and F# are roughly equivalent. After the CIL it's the same JIT and runtime, so the difference would have to come from the CIL generators.
Not quite. The article says the algorithm for each language is quite different. I'd be interested in seeing what the performance of the F# algorithm implemented in C# is. The F# compiler does many more transforms than the C# compiler. (For instance, tail recursive calls in C# just get emitted as normal calls; F# will often convert them into a loop.)