比较C++和C#的一个性能问题
C++:只要你的代码正确,算法良好,你比较少关注性能问题,编译器会替你搞定绝大部分工作
C#:你的代码正确,算法良好,你还得用工具去分析优化性能,JIT为了快速工作,很多优化工作没有深入开展。
手工优化的代码,看起来比较丑陋。
并且,有那么一些东西,无法优化到和Native一样的性能
举例:
1、函数传递struct参数就无法内联,速度慢,单独传递struct成员变量就可以内联,速度快
2、操作符重载不内联,两个struct比较==,都是函数调用(OMG)
3、Math.Sin/Math.Cos/Math.Atan2等等都是函数调用,且比较慢
4、不支持原生SIMD语法,这和“跨平台”目标相关。搞笑的是,M$没跨过去。Mono项目跨了,但却实现了原生SIMD指令。
另外参考讨论:http://social.msdn.microsoft.com/Forums/vstudio/en-US/ae263209-d5bb-4e8c-9bdb-0f44fa2fc9ba/the-speed-performance-of-operator-overloading-vs-method-calls?forum=csharpgeneral
浙公网安备 33010602011771号