微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 测试测量 > 虚拟仪器 > 大家谈谈对于vi效率的提高有没有什么心得

大家谈谈对于vi效率的提高有没有什么心得

时间:12-13 整理:3721RD 点击:
☆─────────────────────────────────────☆
   dair (代代) 于  (Sun Aug 24 13:50:25 2003)  提到:
我编的程序使用了很多循环、数组什么的
结果程序一大,运行速度奇慢
在提高效率上,大家有什么心得吗?
矢量运算,ni有没有作过什么优化之类的
☆─────────────────────────────────────☆
   veri (歪理) 于  (Mon Aug 25 08:53:46 2003)  提到:
LV里循环本身的效率应该已经不错的了,可能问题还是你的数组操作。
【 在 dair (代代) 的大作中提到: 】
: 我编的程序使用了很多循环、数组什么的
: 结果程序一大,运行速度奇慢
: 在提高效率上,大家有什么心得吗?
: 矢量运算,ni有没有作过什么优化之类的
☆─────────────────────────────────────☆
   dair (代代) 于  (Mon Aug 25 09:24:00 2003)  提到:
在lv6.1下面编的程序,
在7。0下运行速度明显比6。1下慢一点
不知为什么,
按理说,高版本不会牺牲程序效率吧
【 在 veri (歪理) 的大作中提到: 】
: LV里循环本身的效率应该已经不错的了,可能问题还是你的数组操作。
☆─────────────────────────────────────☆
   femto (风林火山) 于  (Mon Aug 25 10:59:09 2003)  提到:
高版本加了新特性,如果对比以前的版本在算法上没有大的改进或优化,运行更慢也正常.
我不知道lv的具体运行方式.不过想来和解释型语言(比如vb,matlab)是类似的.这种语言循
环慢是公认的.如果没有专用工具包,唯一的办法是用C/C++之类的语言写代码供他们调用.
matlab因为是矩阵语言,它的矩阵算法是优化的.所以有个办法是把循环转化为矩阵运算.这
叫向量化.如果不能转化,还是要用C来写代码...
【 在 dair (代代) 的大作中提到: 】
: 在lv6.1下面编的程序,
: 在7。0下运行速度明显比6。1下慢一点
: 不知为什么,
: 按理说,高版本不会牺牲程序效率吧
:
: 【 在 veri (歪理) 的大作中提到: 】
: : LV里循环本身的效率应该已经不错的了,可能问题还是你的数组操作。
:
:
☆─────────────────────────────────────☆
   veri (歪理) 于  (Mon Aug 25 11:01:54 2003)  提到:
LV好像不是解释型语言吧 :)
他的循环效率跟matlab不是一个量级的。
【 在 femto (风林火山) 的大作中提到: 】
: 高版本加了新特性,如果对比以前的版本在算法上没有大的改进或优化,运行更慢也正常.
: 我不知道lv的具体运行方式.不过想来和解释型语言(比如vb,matlab)是类似的.这种语言循
: 环慢是公认的.如果没有专用工具包,唯一的办法是用C/C++之类的语言写代码供他们调用.
: matlab因为是矩阵语言,它的矩阵算法是优化的.所以有个办法是把循环转化为矩阵运算.这
: 叫向量化.如果不能转化,还是要用C来写代码...
☆─────────────────────────────────────☆
   femto (风林火山) 于  (Mon Aug 25 11:12:08 2003)  提到:
vb也可以编译执行.不等于说vb不是解释型语言...
很少有人象用matlab那样用c来做优化,我觉得原因是lv的用户倾向于数据采集.对速度没那
么敏感. matlab的用户做数值计算的多,更在乎速度.
lv的循环效率跟matlab不是一个量级的.开玩笑吧.呵呵,你做过对比实验么?
【 在 veri (歪理) 的大作中提到: 】
: LV好像不是解释型语言吧 :)
: 他的循环效率跟matlab不是一个量级的。
:
: 【 在 femto (风林火山) 的大作中提到: 】
: : 高版本加了新特性,如果对比以前的版本在算法上没有大的改进或优化,运行更慢也..
: : 我不知道lv的具体运行方式.不过想来和解释型语言(比如vb,matlab)是类似的.这..
: : 环慢是公认的.如果没有专用工具包,唯一的办法是用C/C++之类的语言写代码供他..
: : matlab因为是矩阵语言,它的矩阵算法是优化的.所以有个办法是把循环转化为矩阵..
: : 叫向量化.如果不能转化,还是要用C来写代码...
:
: ...................
☆─────────────────────────────────────☆
   veri (歪理) 于  (Mon Aug 25 11:30:23 2003)  提到:
我没有仔细研究LV的执行机制,但就目前的使用情况来看,循环操作是比matlab快得多。
而且你所谓得lv用户倾向数据采集,matlab做数值计算也是n年前的老黄历了。如果你
看过matlab的6.5的宣传就不会这么认为了。另外,lv现在也完全不是DAQ了,基本的
analysis都已经包含在LV的Advanced Ananlysis Lib里了,如果有特殊分析需求可以再
另外购买相应的toolset.
【 在 femto (风林火山) 的大作中提到: 】
: vb也可以编译执行.不等于说vb不是解释型语言...
: 很少有人象用matlab那样用c来做优化,我觉得原因是lv的用户倾向于数据采集.对速度没那
: 么敏感. matlab的用户做数值计算的多,更在乎速度.
: lv的循环效率跟matlab不是一个量级的.开玩笑吧.呵呵,你做过对比实验么?
☆─────────────────────────────────────☆
   femto (风林火山) 于  (Mon Aug 25 12:13:08 2003)  提到:
不用看宣传,我们实验室就有matlab 6.5... matlab和lv一样,本来初期就都是为了方便某
些运用而设计的:matlab是为了简化矩阵运算,lv是为了简化数据采集编程. 为了达成这一
点,两个语言在最初的设计上就不是追求高效率(这是c设计的目的)而是追求方便性, 两者
都是知道这一点的,所以他们都是拼命的推出toolkit.而且,都在拓展自己的应用方向.mat
lab有数据采集包,lv也有分析软件包.这并不矛盾.但即使今天,说lv用户倾向数据采集,m
atlab做数值计算也没什么问题.是老皇历,但到现在还是对的.而且我说的是用户,不是语言
的能力.
其实随着计算机技术的发展,不同语言之间的差别在缩小.你喜欢哪个,觉得哪个合用,就用
哪个.
【 在 veri (歪理) 的大作中提到: 】
: 我没有仔细研究LV的执行机制,但就目前的使用情况来看,循环操作是比matlab快得..
: 而且你所谓得lv用户倾向数据采集,matlab做数值计算也是n年前的老黄历了。如果你
: 看过matlab的6.5的宣传就不会这么认为了。另外,lv现在也完全不是DAQ了,基本的
: analysis都已经包含在LV的Advanced Ananlysis Lib里了,如果有特殊分析需求可以再
: 另外购买相应的toolset.
:
: 【 在 femto (风林火山) 的大作中提到: 】
: : vb也可以编译执行.不等于说vb不是解释型语言...
: : 很少有人象用matlab那样用c来做优化,我觉得原因是lv的用户倾向于数据采集.对..
: : 么敏感. matlab的用户做数值计算的多,更在乎速度.
: ...................
☆─────────────────────────────────────☆
   eaglebear (纵横四海) 于  (Mon Aug 25 13:11:02 2003)  提到:
他好象说的是--追求高效率(这是C设计的目的)。
:)
【 在 veri (歪理) 的大作中提到: 】
真不明白为什么用c设计就跟低效率等同了啊?难道你所谓的高效率就是完全用机器语言
实现吗?
【 在 femto (风林火山) 的大作中提到: 】
: 不用看宣传,我们实验室就有matlab 6.5... matlab和lv一样,本来初期就都是为了方便某
: 些运用而设计的:matlab是为了简化矩阵运算,lv是为了简化数据采集编程. 为了达成这一
: 点,两个语言在最初的设计上就不是追求高效率(这是c设计的目的)而是追求方便性, 两者
: 都是知道这一点的,所以他们都是拼命的推出toolkit.而且,都在拓展自己的应用方向.mat
: lab有数据采集包,lv也有分析软件包.这并不矛盾.但即使今天,说lv用户倾向数据采集,m
: atlab做数值计算也没什么问题.是老皇历,但到现在还是对的.而且我说的是用户,不是语言
: 的能力.
: 其实随着计算机技术的发展,不同语言之间的差别在缩小.你喜欢哪个,觉得哪个合用,就用
: 哪个.
☆─────────────────────────────────────☆
   laron (Keep dreams even in the hardest time) 于  (Tue Aug 26 00:46:05 2003)  提到:
我的主要方法是能不用local的地方就不用尽量用shift register,
因为每次读local时都会引起内存复制而这对于大数组来说是很费时的
【 在 dair (代代) 的大作中提到: 】
: 我编的程序使用了很多循环、数组什么的
: 结果程序一大,运行速度奇慢
: 在提高效率上,大家有什么心得吗?
: 矢量运算,ni有没有作过什么优化之类的
☆─────────────────────────────────────☆
   auyuxie (御谐) 于  (Tue Aug 26 08:23:12 2003)  提到:
同感!shift register是很方便的。我刚刚学习LV的时候,上海NI的Eric Xiang,就跟我
说,多用shift register.
另外提醒大家注意用refnum可以节省大量空间,因为函数和子程序间不传递数据,而是re
ference number,就象DAQ里面的task ID。数据只是在需要处理的地方用一下,然后就把
占用的内存释放掉了。我的理解是这样的。
【 在 laron (Keep dreams even in the hardest time) 的大作中提到: 】
: 我的主要方法是能不用local的地方就不用尽量用shift register,
: 因为每次读local时都会引起内存复制而这对于大数组来说是很费时的
:
: 【 在 dair (代代) 的大作中提到: 】
: : 我编的程序使用了很多循环、数组什么的
: : 结果程序一大,运行速度奇慢
: : 在提高效率上,大家有什么心得吗?
: : 矢量运算,ni有没有作过什么优化之类的
:
:
☆─────────────────────────────────────☆
   dair (代代) 于  (Tue Aug 26 13:02:21 2003)  提到:
用shift register和数组相连是不是效率低呢?
【 在 auyuxie (御谐) 的大作中提到: 】
: 同感!shift register是很方便的。我刚刚学习LV的时候,上海NI的Eric Xiang,就跟我
: 说,多用shift register.
: 另外提醒大家注意用refnum可以节省大量空间,因为函数和子程序间不传递数据,而是re
: ference number,就象DAQ里面的task ID。数据只是在需要处理的地方用一下,然后就把
: 占用的内存释放掉了。我的理解是这样的。
☆─────────────────────────────────────☆
   veri (歪理) 于  (Wed Aug 27 09:38:59 2003)  提到:
早上试验了一下单纯的for循环操作,循环次数100,000,000,Matlab 6.5要30秒以上,
LV 6.1下1.8秒左右。不知那些说LV的循环与Matlab的循环执行效率相近是怎么得出
的结论?
【 在 eaglebear (纵横四海) 的大作中提到: 】
: 他好象说的是--追求高效率(这是C设计的目的)。
: 真不明白为什么用c设计就跟低效率等同了啊?难道你所谓的高效率就是完全用机器语言
: 实现吗?
☆─────────────────────────────────────☆
   daliss (daliss) 于  (Wed Aug 27 10:06:52 2003)  提到:
呵呵,用实验数据说话:D
【 在 veri (歪理) 的大作中提到: 】
: 早上试验了一下单纯的for循环操作,循环次数100,000,000,Matlab 6.5要30秒以上,
: LV 6.1下1.8秒左右。不知那些说LV的循环与Matlab的循环执行效率相近是怎么得出
: 的结论?
☆─────────────────────────────────────☆
   Dyphon (IBelieveInKarma!) 于  (Wed Aug 27 20:49:23 2003)  提到:
不是说LV代码的执行效率能达到c的97%吗?
我觉得它的效率对于搞工程的人来说是足够了!
【 在 veri (歪理) 的大作中提到: 】
早上试验了一下单纯的for循环操作,循环次数100,000,000,Matlab 6.5要30秒以上,
LV 6.1下1.8秒左右。不知那些说LV的循环与Matlab的循环执行效率相近是怎么得出
的结论?
【 在 eaglebear (纵横四海) 的大作中提到: 】
: 他好象说的是--追求高效率(这是C设计的目的)。
: 真不明白为什么用c设计就跟低效率等同了啊?难道你所谓的高效率就是完全用机器语言
: 实现吗?
☆─────────────────────────────────────☆
   femto (风林火山) 于  (Thu Aug 28 03:15:38 2003)  提到:
:))
C的97%? 我本来不想再讨论这个话题了.不过好像大家越说越离谱了耶.
matlab 循环慢的原因是因为它的变量都是矩阵. 你whos一下就会看到.循环变量是,size
1X1, 8byte double. 拿矩阵来循环当然慢. matlab的优势在于操作矩阵的时候根本就不必
循环.
我用能改变变量类型的vb试验,结果如下:
lv 7 express 循环100M次.变量取I32型.在我机器上是2.1秒.
vb 6.0 sp5. 同样100M次.变量取缺省的variant. 3.8秒. long, 2.6秒. double 6.0秒.
vb程序:
Private Sub Command1_Click()
Dim i As Double '改变这里的变量定义
a = Timer
For i = 1 To 100000000
Next i
Text1 = Timer - a
End Sub
对比语言的速度,空循环的结果其实没太大的意义.如果真有兴趣,去数学工具板或数值计算
板考古好了. 语言间的争论也没什么意义. 我同意Dyphon的话, lv的效率对于搞工程的人
来说是足够了!
【 在 Dyphon (IBelieveInKarma!) 的大作中提到: 】
: 不是说LV代码的执行效率能达到c的97%吗?
: 我觉得它的效率对于搞工程的人来说是足够了!
: 【 在 veri (歪理) 的大作中提到: 】
: 早上试验了一下单纯的for循环操作,循环次数100,000,000,Matlab 6.5要30秒以上,
: LV 6.1下1.8秒左右。不知那些说LV的循环与Matlab的循环执行效率相近是怎么得出
: 的结论?
:
: 【 在 eaglebear (纵横四海) 的大作中提到: 】
: : 他好象说的是--追求高效率(这是C设计的目的)。
: : 真不明白为什么用c设计就跟低效率等同了啊?难道你所谓的高效率就是完全用机..
: ...................
☆─────────────────────────────────────☆
   veri (歪理) 于  (Thu Aug 28 09:12:09 2003)  提到:
没有人争论,倒是大侠您不停的在辩解些什么。LV的执行效率比Matlab高也是事实。但
Matlab的优势是做数学和算法的人免费提供了大量库函数,而LV由于目标是用计算机
做仪器,代表就是示波器,自然不可能让数据采集停下来等着处理半天。所谓97%的效率
那也不现实,顶多是最高可能达到。但我们试验下来基本上能达到c的50%左右。但由于
LV的跨平台,所以现在NI的开发都不鼓励用C,除非是特别需要底层操作外,全部用G代码
写。就目前来说matlab,LV各自有各自的优势,也有不同的需求,没必要浪费口舌。我
自己用了6年的Matlab,好坏还是能分出一些的。
BTW:matlab当年的另一分支Matrix已经被NI收购了.
【 在 femto (风林火山) 的大作中提到: 】
: C的97%? 我本来不想再讨论这个话题了.不过好像大家越说越离谱了耶.
: matlab 循环慢的原因是因为它的变量都是矩阵. 你whos一下就会看到.循环变量是,size
: 1X1, 8byte double. 拿矩阵来循环当然慢. matlab的优势在于操作矩阵的时候根本就不必
: 循环.
: 我用能改变变量类型的vb试验,结果如下:
: lv 7 express 循环100M次.变量取I32型.在我机器上是2.1秒.
: vb 6.0 sp5. 同样100M次.变量取缺省的variant. 3.8秒. long, 2.6秒. double 6.0秒.
: vb程序:
: Private Sub Command1_Click()
: Dim i As Double '改变这里的变量定义
: a = Timer
: ...................
☆─────────────────────────────────────☆
   dair (代代) 于  (Thu Aug 28 10:34:43 2003)  提到:
对于语言间的效率对比
我并不关心
因为选lv并不是因为他运行效率高
但是我们好多人应该关心
怎样正确的使用lv以发挥它的最高效率
因为不好的G语言风格会使原来正常的效率
大打折扣
【 在 veri (歪理) 的大作中提到: 】
: 没有人争论,倒是大侠您不停的在辩解些什么。LV的执行效率比Matlab高也是事实。但
: Matlab的优势是做数学和算法的人免费提供了大量库函数,而LV由于目标是用计算机
: 做仪器,代表就是示波器,自然不可能让数据采集停下来等着处理半天。所谓97%的效率
: 那也不现实,顶多是最高可能达到。但我们试验下来基本上能达到c的50%左右。但由于
: LV的跨平台,所以现在NI的开发都不鼓励用C,除非是特别需要底层操作外,全部用G代码
: 写。就目前来说matlab,LV各自有各自的优势,也有不同的需求,没必要浪费口舌。我
: 自己用了6年的Matlab,好坏还是能分出一些的。
: BTW:matlab当年的另一分支Matrix已经被NI收购了.
☆─────────────────────────────────────☆
   veri (歪理) 于  (Thu Aug 28 11:30:30 2003)  提到:
//nod
前两天因为一个近乎application的一个函数,由于包含内容多,控制复杂,一开始
内存耗了30多M,最后不停的调整数据结构和控制,总算降到大概20M了。
大家如果数组量比较大的时候尽量保持每次运算的时候数据类型一致,否则会导致
内存重新分配,这个很吃内存的。
【 在 dair (代代) 的大作中提到: 】
: 对于语言间的效率对比
: 我并不关心
: 因为选lv并不是因为他运行效率高
: 但是我们好多人应该关心
: 怎样正确的使用lv以发挥它的最高效率
: 因为不好的G语言风格会使原来正常的效率
: 大打折扣
☆─────────────────────────────────────☆
   dair (代代) 于  (Thu Aug 28 11:59:15 2003)  提到:
有道理啊
【 在 veri (歪理) 的大作中提到: 】
: //nod
: 前两天因为一个近乎application的一个函数,由于包含内容多,控制复杂,一开始
: 内存耗了30多M,最后不停的调整数据结构和控制,总算降到大概20M了。
: 大家如果数组量比较大的时候尽量保持每次运算的时候数据类型一致,否则会导致
: 内存重新分配,这个很吃内存的。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top