在《PQ-M及函数:实现Excel中的lookup分段取值(如计算提成)》例子中,案例数据只有5行,刷新数据时一闪而过就完成了,但是,如果数据增加到10万多行的时候……会怎样呢?比如这个样子:
然后我们刷新一下:
大概90秒左右完成(笔记本电脑有点儿丢人哈)。
接着我们改一下代码,给提成比例表加个Buffer(缓存,类似于一次性将这个表丢到内存里),修改前代码如下:
修改后代码如下(即增加Table.Buffer句,后面引用的时候用Buffer的提成表):
再来刷新一下:
几秒搞定!
为什么加了Buffer会效率提升这么大呢?大致原因如下:
1、 在没有加Buffer的时候,每一行数据做判断时都需要去读一次提成比率表,那么10万行相当于读10万次!
2、 加了Buffer,相当于将提成比率表一次性放到内存里,然后每次读都直接在内存里判断。
因此,当需要对某个表或某个列表(List.Buffer)进行频繁的调用时,加上Buffer能明显提高效率。