C# 代码为什么比 C++代码 编译速度快?

背景:我们的项目是一个三维gis的CS系统,底层用c++ 封装com控件供上层c#调用,C++ 项目有20+个,C#项目也有20+个;vs2010 单独rebuild C++项目需要半个小时左右(用分布式编译需要5分钟左右,现在基本都采用分布式编译),而c#项目不到一分钟。今天有个同事问我为什么C++ 和 C#编译速度差别这么大?

          注:推荐一款分布式编译软件 Incredibuild,安装的人越多,编译越快。 

我的解释如下,有不对的地方欢迎补充指正:

1、C#是把代码先编译为IL语言,而在运行时有CLR转换为平台专用代码;而C++是直接编译为内部机器可执行代码。

2、IL语言是即时编译的(JIT编译),它不是把整个应用程序一次编译完,而是只编译它调用的部分代码。

    代码编译过一次后,得到的内部可执行代码就存储起来,直到程序退出该应用程序。

3、传统的编译器会进行代码优化,但这个优化是独立于代码所运行的特定处理器的。

     JIT编译也可以完成优化工作,而且还可以优化代码所运行的特定处理器。

 

 

 

posted @ 2013-10-25 16:26  —木木鱼—  阅读(833)  评论(0编辑  收藏  举报