为什么 C 语言仍然占据统治地位?( 七 )

与Java(以及某种程度上来说Python也是如此)一样 , .Net提供跨各种平台的可移植性和庞大的集成软件生态系统 。 考虑到.Net世界中有多少面向企业的开发 , 这些都是不小的优势 。 当您使用C#或任何其他.Net语言开发程序时 , 您可以使用为.Net运行时编写的大量工具和库 。

.NET另一个类似Java的优势是JIT优化 。 C#和.Net程序可以按照C语言提前编译 , 但它们主要由.Net运行时进行即时编译 , 并使用运行时信息进行优化 。 JIT编译允许对无法在C中执行的运行着的.Net程序进行各种就地优化 。

与C一样 , C#和.Net提供各种直接访问内存的机制 。 堆 , 栈和非托管系统内存都可以通过.Net API和对象访问 。 开发人员可以使用.Net中的unsafe模式来实现更高的性能 。

但这些都不是没有代价的 。 托管对象和unsafe对象不能被任意交换 , 并且它们之间的编组会降低性能 。 因此 , 要最大化.Net应用程序的性能需要将托管和非托管对象之间的变动保持在最低限度 。

如果您无法承担托管与非托管内存之间变动造成的性能损失 , 或者.Net运行时对于目标环境(例如 , 内核空间)来说是一个糟糕的选择 , 或者可能根本不可用 , 那么C就是你所需要的 。 与C#和.Net不同 , C被默认可以解锁对内存的访问权 。

推荐阅读