由于C#具有内置的垃圾收集器,Roslyn是否比以前用C ++编写的编译器慢?他们执行任何基准测试吗?
答案 0 :(得分:1)
让我解决一个您没有明确提出但适用于您的问题的问题。
问题: 显式垃圾收集是否比隐式垃圾收集更快?
答案::您可能已经知道C ++ / C使用显式垃圾回收,这意味着必须调用free()来释放分配在堆上的内存。另一方面,C#使用隐式垃圾回收,这意味着堆上的内存在后台被释放。这里的关键是隐式垃圾回收会在最佳时间需要时分配内存,而显式垃圾回收始终会单独分配每个对象(如果正确完成)。隐式垃圾回收通过与OS进行通信并使用其他一些算法来实现。在所有情况下,由于上述原因,在大多数情况下,隐式垃圾回收的性能要优于显式垃圾回收。有关更多信息,请查看此post。
回答您的问题:由于我自己还没有见过替补席,所以几乎不可能肯定地说一个要比另一个更快。除垃圾收集外,还有许多其他功能会影响每个语言实现的速度。为了明确起见,C#是基于字节码的语言,它使用JIT(即时)编译器。如果必须选择,由于在某些情况下与C ++编译器相比缺少JIT优化,我会选择C ++实现更快。同样,关于这两种语言的执行速度,取决于情况。例如,JIT可以执行一些优化,这些优化是C ++编译器无法实现的。