If the C# compiler (or JIT compiler) produces faster assembly code than the C compiler for the same algorithm, then in my opinion that means C# is faster than C for that scenario. That you could write a better algorithm in C with a lot of effort is irrelevant
in the real world.
I don't think that's what he said. Only talking about object construction. In allocating dynamic memory in C# is faster than allocating in C. The reason is because C# has garbage collection and thus can have a much simpler allocator. In some cases,
the allocation is simply a pointer-increment, which is similar to the speed of alloating an object on the stack. In C and C++, some kind of a heap is used, so it's more expensive. But this comparison rather naive. C# than incurs a cost when the garbage
collector runs, which C and C++ would not have. However, the speed improevement of dynamic memory allocation with GC helps offset the cost of having a GC in the first place.
In most real-world cases, this stuff doesn't matter. A few places it does. For instance, the fact that the time that the GC can take to collect is non-deterministic, it could be a problem in some cases when developing for real time systems. But I wouldn't
say categorically that GC can't be used (plenty of real time systems that use GC). It all depends on what you're trying to do.