首页 > 解决方案 > dolphindb中的Regular数组和Big数组有什么区别?

问题描述

在 dolphindb 的手册中,构建它们的函数看起来很熟悉:

x = bigarray(int,10,10000000,1);
x = array(int,10,10000000,1);  

我也可以构建一个相同长度的数组....但我很感兴趣。它们之间是否存在一些差异(功能、操作)?

标签: arraysvectorbigdatadifferencedolphindb

解决方案


在 DolphinDB 中,大数组是专门为大数据分析的高级用户设计的。常规数组使用连续内存。如果没有足够的连续内存,就会发生内存不足的异常。一个大数组由许多小内存块组成,而不是一个大内存块。因此大数组有助于缓解内存碎片问题。但是,对于某些操作,这可能会带来轻微的性能损失。对于大多数不需要担心内存碎片问题的用户来说,使用常规数组而不是大数组。

大阵列的最小大小或容量为 16 MB。用户可以使用函数 bigarray 声明一个大数组。常规数组上的函数和操作也适用于大数组。

当我们调用数组函数时,如果没有足够的连续内存块可用,或者数组占用的内存超过了某个阈值(默认阈值为512MB),系统会改为创建一个大数组。我们可以通过将属性 regularArrayMemoryLimit 设置为不同的值来覆盖配置文件中的默认阈值。


推荐阅读