引用赋值

DolphinDB使用 “&” 来表示引用赋值。和值赋值不同,引用赋值是直接引用原值的内存地址,并不拷贝原值。 引用赋值的主要优点是避免不必要的对象拷贝。引用赋值可以有效地节约内存空间。

语法

&<variable>=<object>

例子

$ y=6 4 7;
$ y;
[6,4,7]

$ &x=y;
$ x;
[6,4,7]

// 修改y
$ y[1]=0;
$ y;
[6,0,7]
// 修改y内容的同时修改了x内容
$ x;
[6,0,7]

// 修改x
$ x[0]=3;
$ x;
[3,0,7]
// 修改x内容的同时修改了y内容
$ y;
[3,0,7]

$ y=1..3;
$ &x=y;
$ y=6..4;
$ x;
[1,2,3]
// 若赋予y另一个向量,x也不受影响

下面这个例子展示是:在进行数据交互时,使用引用赋值的效率高于使用值赋值的效率。

$ n=20000000;
// 生成两个包含2千万个double元素的向量
$ x=rand(200000.0, n);
$ y=rand(200000.0, n);

// 值赋值交换数据
$ timer {t=x;x=y;y=t};
Time elapsed: 292.005 ms

// 引用赋值交换数据
$ timer {&t=x;&x=y;&y=t};
Time elapsed: 0 ms