vc++.net和C#.net的效率问题

acm1002 2005-12-18 11:04:30
问个很菜的问题:

分别使用vc++.net和c#开发.net开发.net windows窗体应用程序的效率怎么样?
好像两种语言的中间编译过程不一样的,那同样是开发.net程序呢?都转化成CLR?还是怎么样

...全文
324 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhqich 2005-12-20
  • 打赏
  • 举报
回复
应该C++会比较快些



====CSDN 小助手 V2.5 2005年11月05日发布====
CSDN小助手是一款脱离浏览器也可以访问Csdn论坛的软件
界面:http://blog.csdn.net/Qqwwee_Com/archive/2005/11/05/523395.aspx
下载:http://szlawbook.com/csdnv2

易旭昕 2005-12-19
  • 打赏
  • 举报
回复
为什么不用呢?C++/CLI的语法比起它的前身Managed C++变了很多,而且有很多改进的地方,
CLI比起Managed C++,有了更多的优化选择。

如果不是遗留的历史项目,现在再用Managed C++等于多了一层学习的成本,还不如直接用C++/CLI。
acm1002 2005-12-19
  • 打赏
  • 举报
回复
楼上的,C++/CLI好像是VS2005.NET才出现的吧,现在毕竟微软发布才几天,用这个的人不多
我们还是讨论比较常用的VS2003吧
易旭昕 2005-12-19
  • 打赏
  • 举报
回复
C++/CLI 的一个优势就在于程序可以随意在 CLI代表的托管代码和C++代表的原生代码 之间切换,
如果你一些关键部分需要专门的优化,可以编译成原生代码,只要控制好切换的接口(避免频繁切换,象在一个大循环内调用原生代码的函数这样的行为),使用CLI的程序仍然能够避免过大的性能损失。
acm1002 2005-12-19
  • 打赏
  • 举报
回复
那是不是C#能开发的VC++.NET也都能开发了?
这样一说还是VC++比较重要?
syeerzy 2005-12-18
  • 打赏
  • 举报
回复
即使都是用托管代码,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语言本身的效率。

7,540

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 VC.NET
社区管理员
  • VC.NET社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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