zoukankan      html  css  js  c++  java
  • C#和C++性能差距巨大,在高耗能和低性能设备上强烈建议不要使用

    首先给大家一个声明:

    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#和C++性能差距巨大,在高耗能和低性能设备上强烈建议不要使用

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

  • 相关阅读:
    ejs不能读取js变量??????
    技术架构
    测试框架那些事儿
    如何跨团队带项目?
    自定义网址导航站-聚享导航
    vue+node+mongodb前后端分离博客系统
    聚享导航chrome插件发布
    NuxtJS实战,一个博客系统
    Essay3.0发布,基于JavaScript的前后端同构博客系统
    小程序开发中的一些坑和技巧
  • 原文地址:https://www.cnblogs.com/liyiko/p/2500845.html
Copyright © 2011-2022 走看看