关于语言的执行效率问题

刚在论坛看到有人问C#和C++的效率问题。我觉得:

即使都是用托管代码,C++也比C#效率略高(如果写程序的人水平一样)
因为C++中有更多的优化余地,把更多自由性给了开发人员。另外还可以再举个例子,C#中值类型到引用类型之间的Box和UnBox都是系统自己帮你做的,所以开发人员很容易在这个地方丢失性能,而C++则不会 。

Int32 v = 5; Object o = v; v = 123;
Console.WriteLine(v + ", " + (Int32) o);

这2行再普通不过的代码中就隐藏了6次拆/装箱操作
换成Console.WriteLine(v + ", " + o);变成了3次,
再换成Console.WriteLine(v.ToString() + “, “ + o); 就不需要这种操作而大大提高性能。

问题是作为C#程序员除非你对底层很了解,你是看不出
Console.WriteLine(v + ", " + (Int32) o);
Console.WriteLine(v + ", " + o);
Console.WriteLine(v.ToString() + “, “ + o);
这3句功能完全一样的语句执行效率却可以相差好些倍的。也就是在C#中有更多让程序员丢失性能的陷阱。在C++中少得多,起码这个地方C++是绝对需要程序员自己来Box和UnBox的,你很清楚到底封了多少次。


每一种语言都有让程序员犯错的陷阱,在C#中这种陷阱一般是影响性能,在C++中一般是影响安全。所以仅从性能看C++还是要优势一点,哪怕在托管代码中。

不过很多时候由语言带来的性能影响并不严重,重要的是写程序的人,重要的是算法。都说VC效率高VB效率低,其实更多是因为VC程序员普遍基础要好于VB程序员而不是因为VC和VB语言本身的效率。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值