我一直在思考这个问题有一段时间了。
当然,C # 中有些东西并没有针对速度进行优化,所以使用这些对象或语言调整(如 LinQ)可能会导致代码变慢。
但是如果你不使用这些调整,只是比较 C # 和 C + + 中相同的代码片段(很容易将它们转换成另一个)。真的会那么慢吗?
我看到过一些比较,显示 C # 在某些情况下可能更快,因为理论上 JIT 编译器应该实时优化代码并得到更好的结果:
我们应该记住,JIT 编译器实时编译代码,但这是一次性开销,相同的代码(一旦达到并编译)不需要在运行时再次编译。
GC 也不会增加很多开销,除非您创建并销毁数千个对象(比如使用 String 而不是 StringBuilder)。而且在 C + + 中这样做成本也很高。
我想提到的另一点是,在。网。那个。网络平台的通信比基于托管 COM 的 DLL 要好得多。
I don't see any inherent reason why the language should be slower, and I don't really think that C# is slower than C++ (both from experience and lack of a good explanation)..
那么,用 C # 编写的同一段代码会比用 C + + 编写的同一段代码慢吗?
如果是这样,那为什么?
还有一些其他的参考文献(只是稍微谈了一下,但是没有解释为什么) :