0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

英创信息技术C#调用COM组件的效率分析概述

英创信息技术 来源:英创信息技术 作者:英创信息技术 2019-11-15 09:06 次阅读

.NET Framework是Microsoft为跨平台开发应用程序而创建的一个富有革命性的平台。为了实现其跨平台开发的目标,.NET Framework采用了不同于传统的应用程序编译模式,例如:在VS2003/VS2005/VS2008编译.NET Framewrok所编写的代码时,不是立即创建操作系统特定的本机代码,而是把代码编译为Microsoft中间语言(Microsoft Intermediate Language,MSIL),这些代码不专用于任何一种操作系统,也不专用于C#;要执行应用程序,是Just-In-Time(JIT)编译器的任务,它把MSIL编译为专用于OS和目标机器结构的本机代码。
这样,带来的好处是显而易见的,它使得Studio.NET这样的开发工具不仅可以开发PC桌面应用程序,而且还可以开发WinCE应用程序,未来还可以支持更多的应用平台;但是,一个硬币都有两面,我们还是要怀疑一下这种模式的应用效率。为此我们通过在VS2005 C#开发的调用COM组件的应用程序做了实验。
实验使用英创EM9161嵌入式主板(主频200MHz)和ETA102数采模块采集外部10个通道电压。采用两种模式:
(1)在C#应用程序里面直接编写采集AD的函数。因为ETA102数据采集模块直接与EM9161的精简ISA总线连接,通过英创的ISA总线进行采集控制。英创提供了ISA总线接口的COM组件,所以该直接用C#编写的函数将反复调用ISA COM组件,大略统计采集一次数据将调用COM组件函数50次左右。
(2)用eVC编写采集AD的应用代码,然后将该代码统一打包成一个COM组件,在C#的应用程序直接调用该COM组件函数使用,也就是说,进行一次数据采集只调用一次COM组件函数。
如上两种模式,实现的目的和功能完全一致,我们将数据采集的次数延长,比如采集几千次AD数据,然后统计所花费的时间,发现方式(1)所耗费的时间数倍于采用方式(2),我们得到一个简单结论,C#调用COM组件的效率较低,反复调用COM组件大量地消耗了系统资源和时间。为此,我们进行了简单的计算。为了计算的参照性,我们引用了eVC同样的应用程序执行数据采集所花费的时间作为参考时间。那么,可以这样认为:
程序运行总时间 = 花费在实际数据采集的时间+COM组件消耗的时间+其它系统小开销
其中,“其它系统小开销”在数据采集次数足够多的情况下,可以忽略不计,“花费在实际数据采集上的时间”采用eVC应用程序所得到的数据,那么,我们可以对方式(1)和(2)进行一个简单计算,实际结果是:方式(1)和方式(2)得到的调用一次COM组件应用函数所耗费的时间均是17us,结果惊人的一致。

实验硬件环境

英创EM9161工控主板+ETA102数采模块

CPU:32位ARM9(ARM926EJ-S内核),主频:200MHz

软件 VS2005 C#
一次COM组件调用时间 17us

根据上述实验,我们可以得到在.NET Framework环境C#应用程序开发中COM组件的调用效率原则:即COM组件功能本身的执行时间应大于17us,才可能保证C#应用程序具有较高的执行效率。例如在方式(1)中,每次ISA总线执行的时间只有0.5us,因此若在C#程序中通过反复进行ISA总线的COM组件调用,则实际代码效率就肯定很低;而在方式(2)中,采用专门的AD采集COM组件,可实现一次采集多个样点,每个样点的采集时间为45us,因此,若C#在调用该COM组件时,采用一次采集10个样点的策略,则可获得很高的代码效率。总之,为了保证使用C#等“高级”语言(其他的类似语言有.NET VB、LabView等)进行应用开发的时候具有合理的代码执行效率,对需反复大量调用COM组件函数应仔细了解COM组件函数的实际执行时间,对执行时间小于17us的函数,需特别谨慎,否则将耗费大量系统资源。


声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 嵌入式主板
    +关注

    关注

    7

    文章

    6064

    浏览量

    34605
收藏 人收藏

    评论

    相关推荐

    ISTP检索的全国电子信息技术与应用学术会议(EITA2011)征文

    远程医疗 临床工程技术卫生信息管理 物流管理金融分析服务科学 地理信息信息管理风险管理信息安全
    发表于 07-22 11:45

    LabView调用com组件的问题。

    问题描述: 我需要在LabView中调用matlab程序,使用com组件来实现,组件matlab下生成了DLL文件,也注册过了,可是在LabView中的activeX控件的下拉菜单中找
    发表于 05-12 11:13

    支持Linux高级客户自行移植内核

    上市)  该项服务具体说明和实施流程参见:支持客户进行Linux移植  需要该服务的客户需与签订技术保密协议,并承诺严格履行协议:
    发表于 01-18 13:52

    嵌入式主板的无线通讯解决方案

    ETA6210-WiFi√√ IntelWireless 3160WiFi√ - RalinkRT3070LWiFi√ -成都信息技术有限公司http://www.emtronix.co
    发表于 03-24 14:00

    Eclipse支持在线调试Linux应用程序

    调试linux应用程序》进行下载,也可以直接联系我们。成都信息技术有限公司http://www.emtronix.com
    发表于 03-24 16:28

    串口WiFi方案使用说明

    上的编程方法》,《串口WiFi在WinCE工控主板上的编程方法》。成都信息技术有限公司http://www.emtronix.com
    发表于 04-05 15:52

    敬请关注成都微信公众号

      为了让客户更方便快捷地获取公司的研发动态和产品信息公司对微信公众号进行了一次修改和内容扩充。此外,今后
    发表于 09-29 10:46

    主板中预装Modbus通讯协议

      目前公司提供ModBus通讯协议软件运行于WinCE及Linux环境下,均是以C函数加静态库(modbus.lib或libmodbus.a文件)的形式提供给客户。随着越来越多的客户
    发表于 10-20 10:40

    LabVIEW调用matlab的COM组件

    LabVIEW调用matlab的COM组件matlab可以制作成COM组件,并且注册成功,可在labview中的Active X中的打开自动
    发表于 05-22 14:07

    labview 动态调用 C# 生成的dll

    目的: 用labview动态调用C#生成的dll问题:目前知道可以用.net的构造器调用,但是该方式不像“调用库函数节点”那样可以在运行过程中指定某个路径下的dll
    发表于 01-04 15:47

    信息技术设备产品如何办理3C认证

    信息技术设备办理3C认证:产品种类:​微型计算机(含自助服务终端)、便携式计算机、 与计算机连用的显示设备、与计算机相连的打印 设备、多用途打印复印机、扫描仪、计算机/服 务器内置电源及电源适配器
    发表于 08-27 11:09

    基于COM技术的串口通信组件的设计

    分析了目前对串口编程存在的问题,介绍了COM技术及其在RS232串口通信的应用,指出使用组件相对于ActiveX控件及Windows API编程的优点。基于
    发表于 09-02 09:06 17次下载

    JAVA中基于JACOB的COM组件调用研究

            本文在研究了COM 组件复用,自动化和JNI 技术的基础上,详细阐述了JACOB 技术的原理,指出
    发表于 09-05 10:41 26次下载

    英创信息技术C#使用COM组件接口进行串口操作介绍

    通讯的时候,往往是需要对RTS进行设置的。为了解决这个问题,英创公司现在提供了操作串口的COM组件接口;用户只需要在目标平台上进行组件注册,然后在C#程序开发的时候,对该
    的头像 发表于 11-14 09:37 1911次阅读
    英创<b class='flag-5'>信息技术</b><b class='flag-5'>C#</b>使用<b class='flag-5'>COM</b><b class='flag-5'>组件</b>接口进行串口操作介绍

    英创信息技术嵌入式系统设备驱动接口的C#编程

    的驱动程序,用户只需直接调用相应的接口函数即可实现。 在使用C#进行应用程序开发时,由于C#无法使用C++的静态库函数,对于一些流式驱动设备,比如ISA,GPIO,WDT,CAN,SPI,IRQ等,没有封装好的库函数可操作,如果
    的头像 发表于 01-15 11:29 1111次阅读