清除格值

阅读(754) 标签: 清除格值, 内存溢出,

集算器的网格变量的存储无处不在。单元格的值可以很方便地在计算中引用,但是,也会带来占用内存的问题。当一个格子中的数据已经完成了参与计算的使命时,我们可以把它清除掉以减少对内存的占用。如果在获得中间数据之后,还需要继续复杂的计算,就尤其需要注意,应该把不再使用的单元格值清除掉,以减少对系统内存的消耗,这样可以有效地避免内存溢出。

格值的置空与序表的 reset

比如下面这个问题:列出所有家用电器和食品类订单中总额排在前200名的交易记录,按商品名称排列。订单记录来源于Order_Appliances.txtOrder_Foods.txt两个文本文件,需要先把两个表中的数据汇总后,取得订单总额前200名的订单记录,再按照商品名称排序。

 

A

1

=file("Order_Appliances.txt").import@t()

2

=file("Order_Foods.txt").import@t()

3

=A1|A2

4

=A3.top(200,-Amount, ~).new(ID, PName,Type,Date,Amount)

5

=A4.sort(PName)

其中各单元格运算结果如下:

A1中的序表为Order_Appliances.txt中的订单记录:

A2的序表为Order_Foods.txt中的订单记录:

A3将前面两个序表中的记录简单合并在一起,为下一步的过滤做准备。

A4中选出销售额前200名的订单记录,并从中选出需要的字段生成新序表。由于这里需要按销售额从大到小排列,因此在top() 函数中,Amount前面有负号,此时获得的结果是按照销售额降序排序的:

A5中,按照需要,将销售额前200名的订单记录按照商品名称排序:

实际上,我们最终需要的结果仅是A5中的数据。在A4整理出所有订单记录的必要信息之后,原始表格A1A2中的信息就已经不再需要了。如果在中间数据获得之后,清除掉不再使用的初始数据,可以降低对系统内存的占用,使得运算更为稳定。

因此,网格程序可以按照下面的方法整理:

 

A