C#和C++性能差距巨大,在高耗能和低性能设备上强烈建议不要使用

文章探讨了在移动设备上使用C#与C++进行开发时的性能差异,通过实例展示了C++在高能耗设备上的优势,并提供了性能优化策略。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

首先给大家一个声明:

C#和C++性能差距巨大,在高耗能和低性能设备上强烈建议不要使用

 

首先我使用的设备环境说下

PC端

      I5 CPU

      4G 内存

WinMoblie

      806Mhz  CPU

      256 内存

 

这里我将给出原因:

尽来接了一个项目,搞了一个多月,是WINBOLIE 和PC 视频医疗的,这里的最复杂的部分无非是WINMOBLIE对PC 和PC对WINMOBLIE的视频音频会话。

项目的开始根据客户要求采用纯C# 编写,实现了PC端到PC端的语音和视频,顺便做了一个文字聊天,还做了一个视频服务器,能上线下线并支持视频音频转发。

采用了如下技术:

      1).采用了业界比较通用的XMPP协议

      2).视频用DirectShow.NET做底层,采用H263编码

      3).音频用了 LumiSoft.Media.Wave模块,用G711压缩 speex 回音消除

      4).网络部分用了UDP的NAT穿透

由于我之前在PC上用C++做过类似的案例,所以做起来比较顺手,10来天就搞定了,运行效果良好,总体比较满意

 

 

但是没想到接着就是我的噩梦到来。

 

接着开始把PC上的程序移植到WINMOBLIE上,首先WINMOBLIE上的.NET框架是.NETCF 和原生.NET框架有一定差距。

接着开始移植

    1).DirectShow.NET 是不能直接用了,做了一些修改,花了一点时间基本能用了,但是程序逻辑基本没变

    2).LumiSoft.Media.Wave的音频模块移植非常简单 原本调用的 winmm.dll改成winmoblie上的SDK的DLL就可以了。

    3).XMPP基本顺利移植

    4).网络通信基本没多少改动

到这里可以看出来我程序基本上没多少改动就移植到了WINMOBLIE上,看是很好,可是很悲催的问题出现了

 

 程序性能特别低下!是特别!!!特别的特别!!!卡到基本不能使用!!

 

后面我被迫把模块一个个单独拉出来去测试然后发现

    1).DirectShow.NET 使用的时候CPU 100%(视频)

    2).LumiSoft.Media.Wave 使用的时候 CPU 100% (音频)

 这是单独使用啊!!!单独使用,是不是很坑爹!!!!!

 绝对不是我编程的问题,绝对,我之后可以发一些测试代码上来供大家测试(如果大家兴趣)

 

接着就是无限制的优化+优化!!!!!而且正对WINMOBLE进行优化!

 

整整一个月时间过去,没搞出成果。还是很卡。

 

接着我开始考虑用C++代替C#的方案,然后用C#调用C++写的视频和音频的DLL

 

这里是重点:

      1).DirectShow.NET  基本采用逻辑不便规则移植到C++上,绝对没有什么逻辑性改进!(也就是按照C#的代码去写C++程序)

      2).LumiSoft.Media.Wave 采用基本逻辑不变规则移植到C++上,绝对么有什么逻辑性质改进和优化!

 

发现C++版重写的的:

     1).DirectShow  视频部分 CPU 40%

     2).音频部分 CPU 10%

 

也就是大大满足了要求,性能非常好,任何逻辑改动都没,任何优化都没做!C++立刻完美实现!

 

最后我把情况告诉了客户,客户妥协用C++写了 音频和视频模块,程序流畅运行,CPU才跑60%,啥功能都实现了!

 

最后得到的结论就是

 

C#和C++性能差距巨大,在高耗能和低性能设备上强烈建议不要使用

 

如果大家有兴趣我可以发详细对比测试!欢迎大家讨论!

 

转载于:https://www.cnblogs.com/liyiko/archive/2012/05/15/2500845.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值