减少大型模型的内存使用量

时间:2016-12-13 13:11:28

标签: memory netlogo

我正在尝试设置一个模型,用于计算具有多个目标(大约100)的大型环境(超过500x500补丁)的接近值。从补丁到所有目标的接近值都保存在每个补丁的列表中。

下面的脚本(用随机数填充列表)具有令人费解的高内存使用率。 500x500x100整数值(每个4个字节)应占用大约100 MB的空间。当我运行脚本时,Netlogo应用程序从大约200 MB(程序启动时)增加到大约1500 MB。

我可以做些什么来减少内存使用量?是我的实现中的问题还是Netlogo对列表的开销?

patches-own[ proximity_list ] ; The list to hold proximity values
let num_targets 100 ; Number of targets to calculate proximity values for
let largest_value 100000 ; The largest value the list can contain

ask patches[
    set proximity_list []
    let i 0
    while [i < num_targets] [
        set test_list (lput (random largest_value) test_list)
        set i i + 1
    ]
]

PS我使用Arrays扩展尝试了同样的事情,它减少了内存使用量(约1300MB),但仍然无法解决问题。

0 个答案:

没有答案