完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
网上看到一篇很好的文章,转载分享给大家! 前几天,听到了一个客户的抱怨:他编写了一个labview程序,每次打开主程序就要花费几分钟的时间,这有点令他忍无可忍。我没有见过他的源程序,不过据帮他检查过程序的同事讲,他的问题很可能是使用了大量的LvClass造成的。在他的项目中,包含有上百个类(LvClass)。我以前也听说过LvClass在效率上可能会有些问题,听到了这个消息后,我自己做了一个实验。
LabVIEW Scripting中有一个属性节点可以用来查看内存中所有的VI,我就利用这个VI来查看一个程序到底在装入些什么,令它启动如此之慢。 假设不存在子VI,如果打开某个不在LvClass中的VI(即便这个VI是属于某个lvlib的),只有这个VI会被装入内存。但是,打开某一个LvClass中的VI,我发现不但这个VI会被装入内存,它所在的类中的所有其它的VI也都被调入内存。如果这个类还有父类和祖先类,那么所有父类、祖先类中的VI统统都会被调入内存。
总结一下就是这样:当一个VI被装入内存
以上3条可以是递归发生的,比如一个主VI A被装入内存,它的子VI B也会被装入内存,和B同属一个类的VI C也要被装入内存,C中有个子VI D,D属于类E,E有个父类F,F中有个方法VI G。尽管G的功能和程序A八杆子都打不着了,但也会被装进来。这大概就是那个用户遇到的问题,表面上他的程序不算太大,但是程序开始启动时,却需要把多于程序本身数倍的不相关的VI都装入内存,这一过程会每次都浪费他几分钟的时间。
鉴于LvClass的这一特性,设计使用它的时候一定要格外小心,否则很可能会造成程序效率的低下。我想到了几点需要注意的地方:
举一些例子:
|
|
相关推荐
1 个讨论
|
|
你正在撰写讨论
如果你是对讨论或其他讨论精选点评或询问,请使用“评论”功能。
1145 浏览 1 评论
用udl里的字符串信息在局域网内其他电脑连接sql数据库为什么为出现连接失败拒绝访问?
2024 浏览 2 评论
为什么同一个队列引用的全局变量,运行在两个子vi中发现队列数据丢失了
1646 浏览 0 评论
1839 浏览 0 评论
关于labview2024版本的lvanlys.dll出错的问题
4379 浏览 3 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-29 01:13 , Processed in 1.537046 second(s), Total 47, Slave 36 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号