- 2
- 0
- 约1.34万字
- 约 27页
- 2017-06-07 发布于湖北
- 举报
工欲善其事,必先利其器。对于一个大的程序而言,可能包括很多子VI,如果你想提高程序运行效率,优化内存管理,面对几十个,几百个,甚至上千个的VI,不知道你是不是会有一种无从下手的感觉。在LabVIEW中,有一个监测VI内存占用和运行时间的工具,你可以在工具,性能分析,性能和分析菜单里找到它。这个监测工具可以很方便的显示出每个VI的运行时间,内存占用大小,等等很多有用的信息。有了这些信息,你可以很方便地找到程序中消耗内存最大,执行时间最长的部分。这些部分就是制约程序效率的瓶颈。对其有针对性地进行优化,就可以起到事半功倍的效果。待会我们会看一个演示,看看如何来使用这个工具。 当你找到程序中消耗内存最大,效率最低的那个VI后,如何针对它来进行优化,也是一个很关键的问题。如果我修改了程序,到底效果好不好,有没有起到减少内存分配的效果,很难进行评判。LabVIEW提供了一个工具,用来帮助我们分析VI里各个数据变量的内存复制情况。大家可以在工具,性能分析里找到一个显示缓存区分配工具。运行这个工具,LabVIEW会把程序框图中有内存复制的地方用一个黑点标识出来,你可以看到程序中的内存分配情况。而且你可以有选择地看自己感兴趣的变量,比如数组的,簇的,等等。 在上面的这个框图中,在FOR循环的右边,有一个黑点,表示LabVIEW在这里有一份数组的拷贝。我们的目标也很明确,就是要尽量消除程序框图中的那些黑点。黑点越少,表明数组备份的情况越少,程序所消耗的内存也越少。 下面呢,我们看一个具体的例子,看看如何来使用这两个工具。 运行bad目录里的bad example VI。然后打开Performance and Memory profile工具,看一下各个子VI的运行时间和内存占用情况。 大家可以看到,通过使用这两个工具,我们发现,signal analysis这个VI是程序中的一个瓶颈。它的内存复制的现象也比较的严重。所以我们应该首先针对它进行优化。那我们现在先回到幻灯片中,先具体介绍怎么来进行优化。等把优化的方法,技巧介绍好了,我们再回过头来,看一下完成同样功能,但是经过优化后的程序,它的效率怎么样。 大家先记住signal analysis这个VI的运行时间和占用内存的具体数字。 首先介绍一些比较基础性的指导方针,大家在编程阶段就可以有意识地注意上面所列的这四条。 大家可能在程序框图中都看到过类似这样的红点。这样的红点代表了LabVIEW在这里连接了两种不同的数据类型,并且做了强制类型转化。比如下面这个框图。Random number的输出是一个双精度数。所以FOR循环的输出是一个双精度型的数组。而加法器的另一个输入是单精度型,所以需要把单精度转成双精度,所以有这个红点。加法的结果是一个双精度型的数组,但输出是单精度型的,所以又有一个红点。 当涉及到大数组的类型转换时,比如图上的这个红点,就会占用大量的内存资源。这是需要特别注意和避免的。 我们来看一下下面两个解决方案。这两个方案都是利用了从双精度型到单精度型的转换器。但到底哪个更好一点呢,大家可以想一想。那我们说,右边的方案更好一点。为什么。 首先看一下左边的框图。虽然通过使用类型转换器,使得加法器的输出变成了单精度型,从而消除了原来在输出上的红点。但是,FOR循环的输出仍就是一个双精度型,LabVIEW还是需要为这个输出分配一个双精度型的数组。还是有一个大数组的转换。 而右边的方案,因为把转换器放在了循环结构之中,所以输出已经是一个单精度型的数组了,从而避免了转换一个大的数组。 所以我们在编程中要尽量保持前后数据类型一致,避免做类型转换。如果无法避免的话,也要注意避免对大块数据量进行类型转换。因为这样做,LabVIEW都是要进行数据备份的。 第二点,我要讲一下一类特殊的内存泄漏。LabVIEW是自动释放内存的,所以一般来说不会发生内存泄漏。这里所讲的内存泄漏主要发生在文件操作,或动态调用VI中。当你打开了文件的引用,进行完读写操作后,一定要注意关闭这个引用。不然LabVIEW是不会释放这个文件所占用的内存的。同样,对于动态调用VI也有类似的情况。 所以,在写程序时,打开引用和关闭引用一定是要一一对应的。 我们想创建一个由随机数组成的数组。这里有三种方式。 首先看一下LabVIEW 8.2中的运行时间,然后看一下LabVIEW 8.5下的运行时间。 可以看到,在LabVIEW 8.5中,使用创建数组函数的效率比起第二,第三种方法还有有3倍的差距。但是比起8.2而言,效率已经提高了10多倍。这完全是LabVIEW 8.5对其进行优化后带来的性能提升。 但是,如果你的程序需要非常高的性能,我们还是推荐使用第二,第三种方法。 第四个问题,也是一些LabVIEW程序内存优化中比较常见的一个问
您可能关注的文档
- 从后《黄土地》到后贾樟柯时代——第六代电影美学和产业发展略论.pdf
- 水基系统的概念内涵和演进研究_刘宁.pdf
- 水体中典型环境激素的种类与污染现状.pdf
- 从沥青的温度和密度关系预测沥青的低温性质.pdf
- 水油炸锅及爆鸭炉价格.docx
- 从幺正性及解析性考察量子场论的红外发散.pdf
- 死和变_达洛维太太_到灯塔去_和_海浪_的深层内涵.pdf
- 泰国电话卡全攻略课件.pdf
- 催化裂化装置工艺流程与设备简图.doc
- 单侧墙可移动式模板和支架的设计和施工.pdf
- 小区绿化施工协议书.docx
- 墙面施工协议书.docx
- 1 古诗二首(课件)--2025-2026学年统编版语文二年级下册.pptx
- (2026春新版)部编版八年级道德与法治下册《3.1《公民基本权利》PPT课件.pptx
- (2026春新版)部编版八年级道德与法治下册《4.3《依法履行义务》PPT课件.pptx
- (2026春新版)部编版八年级道德与法治下册《6.2《按劳分配为主体、多种分配方式并存》PPT课件.pptx
- (2026春新版)部编版八年级道德与法治下册《6.1《公有制为主体、多种所有制经济共同发展》PPT课件.pptx
- 初三教学管理交流发言稿.docx
- 小学生课外阅读总结.docx
- 餐饮门店夜经济运营的社会责任报告(夜间贡献)撰写流程试题库及答案.doc
原创力文档

文档评论(0)