声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 4615|回复: 2

[LabView] LabVIEW 的运行效率 1 - 找到程序运行速度的瓶颈

[复制链接]
发表于 2006-10-20 15:47 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?我要加入

x
找到程序运行速度的瓶颈
    想要提高程序的运行效率,首先要找到程序运行的瓶颈在哪里。LabVIEW 程序的运行也符合 80/20 定理:20%的程序代码占用了80%的运行时间。如果能找到这20%的代码,加以优化,就可以达到事半功倍的效果。
    对于已经编写好的程序,可以通过内存和信息工具来查看程序中每个 VI 运行了多长时间。对程序的效率进行优化,要从最耗时的 VI 着手。
    内存和信息工具可以从 LabVIEW 的菜单项 Tools->Profile->Performance and Memory 中启动。图1 是这个工具的界面。
图1:内存和信息(Profile Performance and Memory)工具

    在内存和信息工具中会列出一个程序中的全部子 VI。在运行这个程序之前,先按下工具界面上的 Start 按钮,工具就开始为所有的子 VI 进行统计了。你的程序运行结束后,点击工具上的 Snapshot,就会显示出每个子 VI 在刚才的运行中占用了多少 CPU 时间。按照 VI Time 降序排序,排在最前面的几个 VI 就是程序的瓶颈,是需要重点优化的对象。
abbr_ue2pQYPUUUN-x_wJULMyE2G_PwSmUB80b2T5gtQwMsuQWChntDV_8Ei956rtNz82kyuIDuK-xRcv.png


    一个子 VI 占用了大量 CPU 时间,有可能是因为它内部的运算较为复杂,那就需要打开它,对它的算法进行优化。但更有可能的是因为这个 VI 被程序执行的次数太多。这时,你就要考虑程序结构了,是否可以减少这个 VI 的运行次数,比如把它从某些不必要的循环中挪出去,或者拆分这个 VI 的代码,把没有必要循环执行的部分分离出去,挪到循环体外面。

    并不是所有的运行效率问题都可以在内存和信息工具中体现出来的。
    VI Time 列出的只是子 VI 的 CPU 占用时间,如果你的程序里存在大量的不必要延时,或者程序常常被某些低速工作(如读写外部仪器,通过网络传输数据等)所阻塞。这样的程序效率肯定也是很低的,但是这一类的低效率因素在内存和信息工具上是体现不出来的。
    有些非常耗用 CPU 的操作也无法体现在内存和信息工具上。比如我以后在《LabVIEW 的线程》第四章中会提到一个使用 OpenGL 的例子,由于程序线程设计不当,CPU 被大量消耗在线程切换上。从系统资源管理器看,CPU 被 LabVIEW 占满,在内存和信息工具却看不到任何一个 VI 占用了如此多的 CPU 时间。

    在多核 CPU 的计算机上,由于程序可以在多个 CPU 内核上同时执行,某些子 VI 虽然占用的大量的 CPU 时间,如果程序线程设置合理,是可以让这些 VI 不影响到程序的整体效率的。

转自http://ruanqizhen.spaces.live.co ... 8W8PfmDA!1073.entry
版权归原作者所有

评分

1

查看全部评分

回复
分享到:

使用道具 举报

发表于 2006-10-20 16:12 | 显示全部楼层

说到效率,我突然想到local variable 和property Note的区别

local variable:实质就是对“控制器”/“指示器”中数据进行复制(copy),所以要占用内存,当为数组建立多个本地变量时,会占用大量的内存。
操作行为是读数据(Read)或写数据(Write)

property Note:建立属性节点实质上是对“控制器”/“指示器”中数据进行查询或置入,不会占用内存。因为在部件创建时已经为此参数分配好了内存,多少有些像VB中的属性设置。操作行为是查询(Query)数据或置入(Set)数据。

本地变量:由于本地变量是对内存操作,所以运行速度很快。

属性节点:相对于本地变量来讲,属性节点的效率是很低的,或者说更占用CPU的资源。

此外property Note 可以根据error in 和error out还控制数据流,可防止数据竞态

评分

1

查看全部评分

发表于 2007-6-2 15:42 | 显示全部楼层

刚试了一下

刚才查看了一下我的程序中的内存使用,发现效率还是比较低的。:@L
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-11-28 20:55 , Processed in 0.085434 second(s), 22 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表