博客首页 | 排行榜 |

csxcs366的博客--LABVIEW CVI

http://labview.weebly.com/ 群:80754347 群:78561268 群:37591940

个人档案
博文分类
LV Nugget 之如何高效在数组首端插入数据   2009-11-18 09:44

可变长度数组和字符串是需要不断调用LV内存管理器的,因此需要尽量避免,一般是预设数组长度,采用替换数据元素的方法,当空间不足的时候,一次增加一个内存段,这样可以极大地减少Build Array函数的使用次数,当然这样编程比较复杂。如果数据量不大的情况下,还是直接采用 Build Array函数比较方便,毕竟不需要自己管理数据数组的内存空间了。在其他语言中,这种方式称为动态数组。

Build Array 函数是多态函数,可以一次插入一个元素,也可以一次插入多个元素,或者多维数组插入整行,整列等。今天讨论的是一维数组插入单个元素的问题。

一维数组插入元素有两种方式,首端插入和末端插入,其中末端插入即新增加的元素插入到数组的末端,这是队列的常用方式。如要需要的堆栈的方式,则插入元素必须插入到数组的首端。很少有人注意到这两种方式的使用效率存在极大差别,末端插入的效率要远高于首端插入,如下图所示。

 

 

如果需要使用堆栈方式,可以首先使用队列方式,然后反转数组,构成堆栈方式,这样就避免了在数组前端插入数据,如下图所示。

 

通常情况下,我们会认为反转数组后,数组元素的实际存储位置会实际反转,尤其对于大型数组,所有的元素在内存中实际颠倒次序会耗费更多的时间。实际上,LV 采用了更聪明的方法,多数情况下,LV 并没有实际改变元素的存储位置。在引用数组元素的时候,LV以最后的元素作为第一个元素的索引,加上的负的反向偏移量,就可以确定数组中的元素。

使用末端插入元素+反转替代首端插入元素可以改善数组的运行效率。

类别:LV Nugget |
上一篇:黑色幽默之楼歪歪获奖记 | 下一篇:网友问答之如何计算系统时间
以下网友评论只代表其个人观点,不代表本网站的观点或立场