托管代码和非托管代码效率的对比问题

celineshi 2007-02-02 09:30:27
昨天在浏览一个参赛选手housisong的blog时候发现这样一篇文章转自他人,内容是讲托管代码的效率要比非托管代码低的问题,作者还拿来大赛的代码进行了测试,现在分享给大家,由于里面有很多代码执行后的图片,所以直接将地址发上来,大家可以去看看:http://www.cnblogs.com/wuchang/archive/2006/12/07/584997.html


另外,housisong还针对这篇文章做了进一步的测试和对比,同样因为图片问题,这里我只帖出地址:http://blog.csdn.net/housisong/archive/2007/01/18/1486504.aspx

...全文
1884 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
number1170196649 2011-08-23
  • 打赏
  • 举报
回复
正在琢磨中,高手们踊跃发表见解。让我等新手参考学习。
GabrielCNMao 2008-07-22
  • 打赏
  • 举报
回复
學習了
BlueTrees 2007-02-19
  • 打赏
  • 举报
回复
影响效率的部分并不在于解释还是编译.

这种托管代码,有完整的运行期类型信息,在运行时要进行动态的类型匹配检查,传统的类型检查是在编译的时候,但是,那种方式要么带来错误,要么无法编译通过。影响效率的还有边界检查,堆栈溢出检查输入输出检查等等,还有自动垃圾回收也会影响运行效率。此外,托管代码还有代码执行权限的检查,也会影响速度。

但是,这些影响,比起程序的健壮、安全,这都算不了什么了。
BlueTrees 2007-02-19
  • 打赏
  • 举报
回复
C#或者托管C++生成的是伪代码,但是,他们并不是解释型的,这一点Java也一样,他们也是编译型的,但是,编译的时机不同,传统的是在完成后编译机器码,这种,首先编译成伪代码,在执行前编译成本地机器码,运行的时候都是机器码,也不是运行一条解释一条的,而是编译整个程序集随后装载运行,运行时的效率等于传统程序。

可能还会更高,主要是本地化编译可以优化指令,比如可以根据CPU不同采取不同的编译方法。
aron_d 2007-02-14
  • 打赏
  • 举报
回复
如果是从原理上来讲的话,个人觉得托管代码不可能比非托管更快。因为.Net程序运行在中间语言层之上。以前有人说Java比C++快,那就更加不可能,因为Java是解释型,而C++是编译型,根本就没有可比性
hhuwangzhp1980 2007-02-05
  • 打赏
  • 举报
回复
学习,顶一个
housisong 2007-02-03
  • 打赏
  • 举报
回复
to: zjh222(zjh)
>>"运行的结果就是托管代码慢"

你可能没有看我的对比测试结果,测试中(不全面,仅作参考)托管C++只比非托管C++慢10%而已,而非托管的Delphi速度已经低于托管代码了!

>> "客户只看运行的结果,它不会去管那些字节接不接近原生代码的."

对; 但是我们程序员却要磨利我们使用的兵器;假设用户只使要求实现某个功能,
而某种开发语言开发效率比另一种语言高很多,你会选择哪种?
而这对于公司来说则意味着竞争力和是否能够存活;所以语言并不是可以完全忽略的;
客户看结果,而且会看你的交付速度,还会看交互体验,和是否容易维护等;
托管代码的性能提高意味着某些以前适合原生代码开发的场合现在托管代码可能更加适合;
zjh222 2007-02-02
  • 打赏
  • 举报
回复
客户只看运行的结果,它不会去管那些字节接不接近原生代码的.
运行的结果就是托管代码慢
housisong 2007-02-02
  • 打赏
  • 举报
回复
我看到他的对比后觉得测试很不公平,所以就自己也做了一个测试,而且尽量使他们能比较公平的对比(当然不能说是完全的公平);

结果是发现托管代码和原生代码在性能上已经非常的接近! 而且让人难以相信的是托管C++生成的代码已经逼近了原生C++的代码;(刚开始有点不相信,就去查了一下托管C++生成字节码,里面完全是.net的字节码;可以肯定它应该是在运行的时候才进一步编译成本地机器码来执行的);也就是说托管代码在原理上完全有可能达到甚至超过原生编译的代码!
这对我是一个很的观念转变;以前也知道托管代码有可能超越原生代码,但总以为目前还差得远,但没想到这一天来得这么快!

567

社区成员

发帖
与我相关
我的任务
社区描述
英特尔® 边缘计算,聚焦于边缘计算、AI、IoT等领域,为开发者提供丰富的开发资源、创新技术、解决方案与行业活动。
社区管理员
  • 英特尔技术社区
  • shere_lin
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧