There's certainly no reason why a C# program must run slower, as it could be converted directly to machine code and thereby optimized further. In fact both Java and C# already have such facilities available (gcc, for instance, allows you to compile Java code directly). So it basically just boils down to how efficient the implementation is, really. In any case, whatever language you choose, there is generally a way to incorporate components written in assembly language if things get really tight.