Swifter C的编程效率如何?

2026-05-27 04:050阅读0评论SEO资源
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计2005个文字,预计阅读时间需要9分钟。

Swifter C的编程效率如何?

当然可以,请您提供需要改写的原文,我会根据您的要求进行修改。

如果问题是C#怎么才能和C++一样快,那么真正的问题就是C#到底是慢在哪。内联是诸多影响C#性能中的一个,如果频繁调用的大量小函数没有内联,那么对性能的影响是非常大的,因为建栈、删栈、压栈和跳转的时间加起来很可能比实际执行函数体的时间还长。

在实际的应用中,Milo Yip的《C++/C# /F#/Java/JS/Lua/Python/Ruby渲染比试》是非常好的例子,典型的计算密集的应用,里面有大量向量计算的小函数调用。结果C#的表现令人失望,性能落后VC++版本一倍还多,即使我改成struct out ref的形式(代码请参见Milo文章)虽然性能略有提高但是差距仍然较大。首先想到是否因为.NET CLR没有内联这些小函数导致的这个性能差异呢。实践出真知,赶快调试看看,不知道如何看JIT生成的ASM的同学可以看Clayman的这篇文章。结果是我猜错了,.NET的JIT编译器已经内联了这些函数。

阅读全文

本文共计2005个文字,预计阅读时间需要9分钟。

Swifter C的编程效率如何?

当然可以,请您提供需要改写的原文,我会根据您的要求进行修改。

如果问题是C#怎么才能和C++一样快,那么真正的问题就是C#到底是慢在哪。内联是诸多影响C#性能中的一个,如果频繁调用的大量小函数没有内联,那么对性能的影响是非常大的,因为建栈、删栈、压栈和跳转的时间加起来很可能比实际执行函数体的时间还长。

在实际的应用中,Milo Yip的《C++/C# /F#/Java/JS/Lua/Python/Ruby渲染比试》是非常好的例子,典型的计算密集的应用,里面有大量向量计算的小函数调用。结果C#的表现令人失望,性能落后VC++版本一倍还多,即使我改成struct out ref的形式(代码请参见Milo文章)虽然性能略有提高但是差距仍然较大。首先想到是否因为.NET CLR没有内联这些小函数导致的这个性能差异呢。实践出真知,赶快调试看看,不知道如何看JIT生成的ASM的同学可以看Clayman的这篇文章。结果是我猜错了,.NET的JIT编译器已经内联了这些函数。

阅读全文