首页 » SEO优化 » phprandextend技巧_Kdb 用腻了一文帮你成为数据迁移小好手

phprandextend技巧_Kdb 用腻了一文帮你成为数据迁移小好手

访客 2024-12-10 0

扫一扫用手机浏览

文章目录 [+]

2018年初发布的 DolphinDB,同样是性能极佳的韶光序列数据库。
作为一款国产的高性能分布式数据库产品,DolphinDB 迅速崛起,成为海内头部券商、私募公募的首选方案。
DolphinDB 功能强大的编程措辞和高容量高速率的流数据剖析系统,能在知足低延时高吞吐量数据读写的哀求的同时,轻松实现因子挖掘、流式打算、股票行情回放、实时打算高频因子等功能,为金融和物联网领域的数据存储和剖析打算供应一站式办理方案。
近几年来,DolphinDB 天然的分布式构架,强大的流式增量打算能力,丰富的函数库,以及易用性等上风吸引了大量海内外用户利用 DolphinDB 代替 Kdb+。

本教程旨在为 Kdb+ 利用者迁移到 DolphinDB 供应一份简明的参考,稽核了两者的相同点和差异,先容了如何将 Kdb+ 数据迁移到 DolphinDB,并总结了从 Kdb+ 到 DolphinDB 编程语法方面的映射。

phprandextend技巧_Kdb 用腻了一文帮你成为数据迁移小好手

1. Kdb+ vs DolphinDB

Kdb+出身于上世纪90年代末,紧张用于金融场景的数据处理。
DolphinDB 的首次发布在2018,相隔 Kdb+ 20年。

phprandextend技巧_Kdb 用腻了一文帮你成为数据迁移小好手
(图片来自网络侵删)
1.1 DolphinDB 与 Kdb+ 的相同点

1)数据库类型

DolphinDB 和 Kdb+ 都是列存储的韶光序列数据库,都包括磁盘数据库和内存数据库,同样支持并鼓励对表进行分区。
数据库系统都包括了编程措辞,非常适宜库内开拓重度的数据运用。

2)编程措辞

DolphinDB 和 Kdb+ 在编程措辞方面有许多相似的地方。
DolphinDB 同样支持元编程、向量处理和函数式编程,部分 SQL 语句可以在 DolphinDB 脚本中直策应用。
Kdb+ 的数据类型、函数和关键字大多能在 DolphinDB 中找到对应,大部分的 Kdb+ 脚本都可以一对一翻译为 DolphinDB 脚本。

3)金融支持

DolphinDB 和 Kdb+ 都对金融领域有非常好的支持。
作为列式存储的时序数据库,两者不仅有着常规数据库的精确性、稳定性和安全性,还在存储和处理构造化韶光序列数据的场景下有天然的上风,并且都支持对向量、矩阵、表等多种类型的数据进行数值剖析的操作,非常适宜追求高性能和高灵巧性的金融运用领域。
此外,DolphinDB 和 Kdb+ 还都具备对海量流数据进行实时剖析的能力,是流数据库、内存数据库和历史数据三合一的全栈数据平台。

1.2 DolphinDB 与 Kdb+ 的差异

1)系统架构

DolphinDB 和 Kdb+ 在架构上有很大的不同。
DolphinDB 的构架引入了分布式文件系统,天然具备数据高可用、系统高容错、集群易扩展等分布式系统设计所带来的上风。
比较之下,紧张基于高性能打算机设计的 Kdb+,虽然也能通过脚本修正途由网关的办法,运行在多做事器集群上,但这种办法具有很大的局限性。
除了集群的支配难度和扩展性受限,Kdb+ 很难像 DolphinDB 一样实现自动平衡节点负载来提升并行打算的性能,或是在某个节点故障时担保系统的高可用性。

2)多用户接入支持

DolphinDB 相对付 Kdb+ 在架构上的上风还表示在它对多线程的支持上。
DolphinDB 支持多用户同时接入系统进行作业,用户可以利用 Web 端管理页面、VS code 插件或是桌面真个 DolphinDB GUI 连接做事器运行脚本。
而 Kdb+ 虽然支持并发运算,它对多用户并发任务的支持却没有那么完善,一个运行非常耗时的任务作业就会导致全体数据库系统的壅塞,从而无法相应其他用户。
实际生产中,这个毛病在附近市场开放和结束的一段韶光里可能会造成问题。

同时,Kdb+ 对多用户接入的设计是让所有用户共享一个 session,用 domain 来区分不同用户创建的变量或自定义函数,但不逼迫哀求用户创建自己的namespace。
而 DolphhinDB 为每一个用户创建自己的session,相互之间不可见,自定义变量和函数的共享则通过利用 share 关键字以及创建 module 或 functionView 的办法实现。
相对而言,Kdb+ 的用户 session 管理机制对用户自己操作规范的哀求更高。

3)数据库特性

DolphinDB 和 Kdb+ 磁盘存储的模式不同。
Kdb+ 利用离线存储模式,数据持久化须要频繁读写磁盘,在部分运用处景会由于 IO 的限定而效率较低。
DolphinDB 利用在线存储,可以保持数据随时可用的状态。

此外,DolphinDB 数据库还有许多 Kdb+ 没有的特性。
DolphinDB 内置了 OLAP 和 TSDB 双引擎,对事务的 ACID 有严格的支持。
DolphinDB 供应包括技能剖析指标库(TA-lib)、MyTT(My麦措辞 T通达信 T同花顺)指标库和 WorldQuant 101 Alpha 因子指标库在内的1000多个内置函数,能更好地支持金融领域的运用处景。
针对高频数据的实时剖析处理,DolphinDB 内置多种流打算引擎,支持增量打算和并发打算,窗口函数的性能不受限于窗口长度,能很好地知足物联网和金融领域的运用需求。

4)编程友好

DolphinDB 和 Kdb+ 编程措辞的设计理念有很大不同。
Kdb+ 哀求代码尽可能简短,来减小全体程序的footprint,从而换取更少的访存韶光。
Kdb+ 编程措辞对同一操作符做了多种重载,表达式从左到右解析,运算符没有优先级,缺点信息也非常大略。
而 DolphinDB 的编程措辞设计上非常看重代码的可读性,语法更靠近 Python,表达式跟大部分编程措辞的习气相同,从右到左解析,并尊重运算符的优先级。
DolphinDB 编程措辞可读性高,上手难度低,代码更随意马虎更新掩护,是比 Kdb+ 更加适宜当代软件工程团队协作的编程措辞。

5)中文友好

与 Kdb+ 比较,DolphinDB 对中文用户更加友好。
DolphinDB 由浙江智臾科技有限公司自主研发,有丰富的中文教程和互换氛围良好的技能互换社区,DolphinDB 团队也在不断地对产品进行更新和掩护。

2. 从 Kdb+ 导入数据到 DolphinDB

DolphinDB 为导入 Kdb+ 数据供应插件支持,插件代码已开源在 github/gitee 平台,详细利用请参考 github 上的教程或 gitee 上的教程。

DolphinDB 的 Kdb+ 插件为用户供应了两种数据导入办法:连接正在运行的 Kdb+ 数据库,以 Kdb+ 数据库作为中间管道导入数据;直接读取磁盘上的 Kdb+ 数据文件进行导入。
两种办法都会将数据加载为 DolphinDB 的内存表。

利用 DolphinDB 的 Kdb+ 插件导入数据,在脚本中用 loadPlugin("/path/to/plugin/PluginKDB.txt") 语句加载插件,就可以用插件供应的函数进行数据导入。
对付第一种导入办法,首先须要利用 connect 函数建立与 Kdb+ 数据库的连接,获取连接句柄,之后可以用 close 函数断开连接。
利用 loadTable 函数通过 Kdb+ 数据库读取数据,须要供应表文件的路径和 sym 文件路径,sym 文件路径可以为空。

// 加载插件loadPlugin("/home/DolphinDBPlugin/kdb/build/PluginKDB.txt")// 确保插件加载完毕再实行之后的代码go// 连接 kdb+ 数据库,用户名和密码字段可以为空handle = kdb::connect("127.0.0.1", 5000, "admin:123456")// 指定文件路径DATA_DIR="/home/kdb/data/kdb_sample"// 通过 loadTable,加载数据到 DolphinDBDaily = kdb::loadTable(handle, DATA_DIR + "/2022.06.17/Daily/", DATA_DIR + "/sym")Minute = kdb::loadTable(handle, DATA_DIR + "/2022.06.17/Minute", DATA_DIR + "/sym")Ticks = kdb::loadTable(handle, DATA_DIR + "/2022.06.17/Ticks/", DATA_DIR + "/sym")Orders = kdb::loadTable(handle, DATA_DIR + "/2022.06.17/Orders", DATA_DIR + "/sym")// 关闭连接kdb::close(handle)

对付第二种文件导入办法,利用 loadFile 函数直接读取磁盘上的 Kdb+ 文件,须要供应表文件的路径和可选的 sym 文件路径,sym 文件路径可以为空。

// 加载插件loadPlugin("/home/DolphinDBPlugin/kdb/build/PluginKDB.txt")// 确保插件加载完毕再实行之后的代码go// 指定文件路径DATA_DIR="/home/kdb/data/kdb_sample"// 通过 loadFile,加载数据到 DolphinDBDaily2 = kdb::loadFile(DATA_DIR + "/2022.06.17/Daily", DATA_DIR + "/sym")Minute2= kdb::loadFile(DATA_DIR + "/2022.06.17/Minute/", DATA_DIR + "/sym")Ticks2 = kdb::loadFile(DATA_DIR + "/2022.06.17/Ticks/", DATA_DIR + "/sym")Orders2 = kdb::loadFile(DATA_DIR + "/2022.06.17/Orders/", DATA_DIR + "/sym")3. 给 Kdb+ 利用者的 DolphinDB 语法参考

本节的编写基于 Kdb+ 和 q 官方参考文档和 DolphinDB 2.0用户手册。

本节所提及的 Kdb+ 函数或关键字在 DolphinDB 中的对应,仅担保功能上的可替代性,利用方法可能与原函数略有差异。
建议在实际利用前查阅 DolphinDB 2.0用户手册。

3.1 数据类型3.1.1基本数据类型

Kdb+ 数据类型

DolphinDB 数据类型

举例

字节数

范围

VOID

NULL

Void

boolean

BOOL

1b, 0b, true, false

1

0~1

byte

char

CHAR

'a', 97c

1

-2 7 +1~2 7 -1

short

SHORT

122h

2

-2 15 +1~2 15 -1

int

INT

21

4

-2 31 +1~2 31 -1

long

LONG

22, 22l

8

-2 63 +1~2 63 -1

real

FLOAT

2.1f

4

有效位数:06~09 位

float

DOUBLE

2.1

8

有效位数:15~17 位

date

DATE

2013.06.13

4

month

MONTH

2012.06M

4

time

TIME

13:30:10.008

4

minute

MINUTE

13:30m

4

second

SECOND

13:30:10

4

(datetime)

DATETIME

2012.06.13 13:30:10 or 2012.06.13T13:30:10

4

TIMESTAMP

2012.06.13 13:30:10.008 or 2012.06.13T13:30:10.008

8

DATEHOUR

2012.06.13T13

4

timespan

NANOTIME

13:30:10.008007006

8

timestamp

NANOTIMESTAMP

2012.06.13 13:30:10.008007006 or 2012.06.13T13:30:10.008007006

8

symbol

SYMBOL

4

STRING

"Hello" or 'Hello' or `Hello

guid

UUID

5d212a78-cc48-e3b1-4235-b4d91473ee87

16

DolphinDB 目前没有可以直接对应 Kdb+ 中 byte 的数据类型。
Kdb+ 中的 char 类型利用双引号标识,而 DolphinDB 的 CHAR 利用单引号。
"c" 在 DolphinDB 中会被识别为字符串。
Kdb+ 中的 long 类型与 DolphinDB 的 LONG 数据类型符号不同。
一个值为42的长型整数若表示为 42j,则无法被 DolphinDB 识别。
Kdb+ 中的 month 类型与 DolphinDB 的 MONTH 数据类型符号不同,2006.07m 在 DolphinDB 中会报错。
对付韶光类型的值,DolphinDB 用小写字母 m 作分钟类型的后缀,而月份类型的后缀利用了大写字母 M。
DolphinDB 中 DATETIME 类型大小为4字节,而 Kdb+ 中 datetime 类型大小为8字节。
DolphinDB 的 SYMBOL 类型是分外的字符串类型,相称于列举类型,数据在 DolphinDB 系统内部存储为一个整数,因此数据排序和比较更有效率。
详细利用请参照《DolphinDB 2.0用户手册》中“数据类型”一节。

关于 NULL 和 INF

与 Kdb+ 不同,DolphinDB 没有专门用于表示各个类型正负无穷值的字面量,类型数据溢出时,会被处理为该类型的 NULL 值。
常日,在赋值语句或表达式中利用无返回值的函数时,也会得到一个 VOID 类型的 NULL。

通过函数 isVoid 判断是否为 VOID 类型的 NULL,通过函数 isNull 和 isValid 可以检讨所有 NULL 值,包括 VOID 和有类型的 NULL。
对付不关心 NULL 类型的用户,建议利用 isNull 或 isValid 进行条件判断。

对付 NULL 值的初始化、运算,以及在普通向量函数、聚合函数和高阶函数中的利用方法,《DolphinDB 2.0用户手册》中“NULL 值的操作”一节有详细的解释。

3.1.2 其他数据类型

Kdb+ 数据类型

DolphinDB 数据构造

举例

list

ANY, MATRIX, DICTIONARY

(1,2,3)

enums

anymap

ANY DICTIONARY, DICTIONARY

{a:1,b:2}

dictionary

table

IN-MEMORY TABLE

ANY DICTIONARY 是 DolphinDB 中表示 JSON 的数据类型。
DolphinDB 的字典支持嵌套,键必须是标量,值可以是任何数据形式与数据类型。
Kdb+ 的字典在输出或进行遍历时,键值对会保留输入时的顺序,而 DolphinDB 的字典按照 key 在 bucket 内的顺序输出键值对。
Kdb+ 的矩阵由嵌套的 list 表示,遵照行优先。
DolphinDB 的矩阵有专门的数据类型 matrix,遵照列优先,Kdb+ 矩阵输入到 DolphinDB 时须要转换方向。
DolphinDB支持包括标量、向量、数据对、矩阵、凑集、字典和表在内的多种数据形式,并针对不同的利用场景做了详细优化,请参考《DolphinDB 2.0文档》中“数据形式”一节。
3.1.3 数据类型检讨函数

DolphinDB供应了 typestr 和 type 这两个用于检讨数据类型。
typestr 返回的是数据类型的名称(字符串常量);type 返回的是数据类型 ID(整数)。

3.2 关键字3.2.1 control 类

Kdb+

DolphinDB

do

do-while

exit

if

if-else

while

do-while

3.2.2 env 类

Kdb+

DolphinDB

getenv

getEnv

gtime

gmtime

ltime

localtime

setenv

3.2.3 interpret 类

Kdb+

DolphinDB

eval

eval

parse

parseExpr

reval

show

print

system

shell

value

查询字典、表的值:

values

查询普通变量的值:

print

将字符串作为元代码实行:

parseExpr

将列表作为元代码实行:

expr

3.2.4 join 类

join 办法

Kdb+

DolphinDB

as-of join

aj, aj0, ajf, ajf0, asof

aj

equal join

ej

ej, sej

innner join

ij, ijf

inner join

left join

lj, ljf

lj, lsj

plus join

pj

union join

uj, ujf

window join

wj, wj1

wj, pwj

3.2.5 list 类

Kdb+

DolphinDB

count

非NULL元素个数:

count

包括NULL的元素个数:

size

mcount

mcount

cross

join:C, cross(join, X, Y)

cut

cut

enlist

[], array, bigArray

except

fills

ffill, ffill!

first

first

last

last

flip

flip, transpose

group

groups

in

in

inter

intersection(set(X), set(Y))

next

next

prev

prev

xprev

move

raze

将一个矩阵或一系列向量转换成一维向量:

flatten

reverse

reverse

rotate

sublist

head, tail, subarray, subtuple

sv

连接字符、字符串向量:

concat

til

til

union

union(set(X), set(Y))

distinct(join(X, Y))

vs

分割字符串:

split

where

3.2.6 logic 类

Kdb+

DolphinDB

all

all

and

and

any

any

not

not

or

or

3.2.7 math 类

Kdb+

DolphinDB

abs

abs

cos

cos

acos

acos

sin

sin

asin

asin

tan

tan

atan

atan

avg

avg, mean

avgs

cumavg

ceiling

ceil

cor

corr

cov

scov

covar

deltas

deltas

dev

stdp

mdev

mstdp

sdev

std

div

div

ema

ema

exp

exp

xexp

pow

floor

floor

inv

inverse

log

log

xlog

lsq

mavg

mavg

wavg

wavg

max

max

maxs

cummax

mmax

mmax

med

med

min

min

mins

cummin

mmin

mmin

mmu

dot

mod

mod

sum

sum

sums

cumsum

msum

msum

wsum

wsum

neg

neg

prd

prod

prds

cumprod

rand

rand

ratios

ratios

reciprocal

reciprocal

signum

signum

sqrt

sqrt

within

between, in

var

varp

svar

var

DolphinDB 的 TA-lib 系列函数窗口确定规则与 Kdb+ 不同,会忽略元素开头的空值,并将这些空值保留到结果中,然后从第一个非空元素开始进行滑动窗口的打算。
当以元素个数衡量窗口时,根据滑动窗口的打算规则,只有当 window 内的元素填满窗口时,才开始第一次打算,即前(window - 1)个元素的打算结果默认为 NULL。
DolphinDB 的 m 系列(滑动窗口系列)函数的窗口确定规则,在没有指定 minPeriods 参数的情形下,将前 (window - 1)个元素视为 NULL。
若要得到与 Kdb+ 相同的打算结果,请将 minPeriods 参数指定为1。
DolphinDB 的 ratios 函数,若输入参数是向量,返回结果的第一个元素是 NULL。
3.2.8 meta 类

Kdb+

DolphinDB

attr

null

isNull, isNothing, isVoid

tables

getTables

type

type, typestr, form

view, views

3.2.9 SQL类

Kdb+

DolphinDB

delete

delete, sqlDelete

exec

exec

fby

contextby

select

select

update

变动记录:

update, sqlUpdate

添加新的记录:

insert into

添加新的列:

alter, addColumn

3.2.10 sort 类

Kdb+

DolphinDB

asc

sort, sort!

iasc

isort, isort!

xasc

sortBy!

bin, binr

binsrch

desc

sort, sort!

idesc

isort, isort!

xdesc

sortBy!

differ

valueChanged

distinct

distinct

rank

rank

xbar

bar

xrank

bucket

3.2.11 table 类

Kdb+

DolphinDB

cols

columnNames

xcol

rename!

xcols

reorderColumns!

csv

csv 格式分隔符:

,

fkeys, key, keys, xkey

insert

insert into, tableInsert, append!, push!

meta

schema

ungroup, xgroup

upsert

insert into, tableInsert, append!, push!

xasc

sortBy!

xdesc

sortBy!

3.2.12 text 类

Kdb+

DolphinDB

like

like, iliek

lower

lower

upper

upper

trim

trim

ltrim

ltrim

rtrim

rtrim

md5

md5

ss

regexFind

ssr

regexReplace

string

string

3.2.13 自定义函数

Kdb+

DolphinDB

signed lambda:

f:{[x;y](xx)+(yy)+2xy}

unsigned lambda:

{(xx)+(yy)+2xy}[20;4]

命名函数:

def func(x, y) { return (xx)+(yy)+2xy; }

匿名函数:

def (x, y) { return (xx)+(yy)+2xy; }

lambda表达式(只有一个语句的函数):

def func(x,y):(xx)+(yy)+2xy;

def(x,y):(xx)+(yy)+2xy;

def(x,y)-> (xx)+(yy)+2xy;

x->xx

在 Kdb+ 的语法中,“lambda”与“function“这两个词是等价、可互换的。
而在 DolphinDB 中,lambda 表达式是只有一个语句的函数。
Kdb+ 许可无参数列表的函数定义,会默认 x, y, z 按顺序作为可利用的参数名。
而 DolphinDB 哀求自定义函数必须有非空或者空的参数列表。
DolphinDB 支持在定义函数时利用默认参数,支持利用 const 和 mutable 关键字润色参数。

// default argumentdef func(x=1): x+1;// mutable argumentdef i2t(mutable tb) { return tb.replaceColumn!(`time, time(tb.time/10); }DolphinDB 对自定义函数支持即时编译(JIT),能担保函数的实行效率。
DolphinDB 许可自定义函数利用内置函数的全部调用办法,即可以用标准格式(前缀)和工具方法格式(后缀)调用用户的自定义函数,若用户定义函数的参数数量为一个或两个,还可以利用运算符格式(中缀)调用函数。

def f(x, y): x+y+1;p = 2;q = 3;f(p, q); // standardp.f(q); // method of objectp f q; // operator3.3运算符

与 Kdb+ 相同,DolphinDB 的运算符根据浸染工具的数目可分为一元运算符和二元运算符。
DolphinDB 支持许多类型的基本运算符,包括算术运算符、布尔运算符、关系运算符、成员运算符等,以及多种运算数据类型,包括标量、向量、凑集、矩阵、字典和表。

与 Kdb+ 不同的是,DolphinDB 表达式的运算顺序是从左往右,也存在运算符优先级的观点。
DolphinDB 的运算符优先级顺序与大多数编程措辞相似,表达式中优先级最高的运算符首先被实行,具有相同优先级的运算符则按从左到右的顺序实行。

Kdb+ 符号

Kdb+ 含义

DolphinDB

.

Apply

call()

Index

[]

Trap

try-catch

Amend

@

Apply At

call()

Index At

[]

Trap At

try-catch

Amend At

$

Cast

$, cast()

Tok

类型转换函数可直接转换字符串

Enumerate

Pad

lpad(), rpad()

mmu

!

Dict

dict()

Enkey, Unkey, Enumeration, Flip Splayed, internal

Display

print()

Update

update(), update!()

Delete

erase!()

?

Find

in(), find()

Roll

rand()

Deal, Enum Extend

Select

select

Exec, Simple Exec

exec

Vector Conditional

iif()

+

Add

+

-

Substract

-

Multiply

%

Divide

\

=

Equals

==

<>

Not Equals

!=

~

Match

<

Less Than

<

<=

Up To

<=

>=

At Least

>=

>

Greater Than

>

|

Greater

max()

OR

|

&

Lesser

min()

AND

&

#

Take

take()

Set Attribute

_

Cut

cut()

Drop

drop()

:

Assign

=

^

Fill

ffill(), ffill!()

Coalesce

append!()

,

Join

<-

'

Compose

0: 1: 2:

File Text, File Binary, Dynamic Load

loadText(), saveText()

0 ±1 ±2 ±n

write to console, stdout, stderr, handle n

print()

3.4副词

Kdb+ 和 DolphinDB 中的副词,也便是高阶函数,因此一个函数与数据工具作为输入内容的函数,用以扩展或增强函数或者运算符的功能。
常日,输入数据首先以一种预设的办法被分解成多个数据块(可能重叠),然后将函数运用于每个数据块,末了将所有的结果组合为一个工具返回。

Kdb+ 中副词的浸染工具是 list,而 DolphinDB 高阶函数的输入数据可以是标量、向量、矩阵、字典或表。
常日来说,一个向量被分解成多个标量,一个矩阵被分解成多列(向量),一个表被分解成多行(字典)。
在组装阶段,标量类型合并组成一个向量,向量合并成一个矩阵,字典合并成一张表。
DolphinDB 高阶函数按元素遍历向量,按列遍历矩阵,按行遍历表。

Kdb+ 符号

Kdb+ 含义

DolphinDB

'

Each, each

each() 或 :E

Case

Each Parallel, peach

peach()

Each Prior, prior

eachPre() 或 :P

/:

Each Right

eachRight() 或 :R

\:

Each Left

eachLeft() 或 :L

/

Over, over

reduce() 或 :T

\

Scan, scan

accumulate() 或 :A

3.5实行掌握

Kdb+ 符号

Kdb+ 含义

DolphinDB

.[f;x;e]

Trap

try-catch

@[f;x;e]

Trap-At

try-catch

:

Return

return

'

Signal

throw

do

do-while

exit

quit

while

do-while

if

if-else

$[x;y;z]

Cond

if-else

x:y

Assign

<variable>=<object>

x[i]:y

Indexed assign

<variable>[index]=<object>

x op:y, op:[x;y]

x[i]op:y, op:[x i;y]

Assign through operator

支持以下运算符扩展的赋值:

+=, -=. =, /=, \=

\t

Timer

timer

DolphinDB 支持多变量赋值,可将一个或多个值一次性授予多个变量。
DolphinDB 支持引用赋值,直接引用原值的内存地址来避免不必要的拷贝,有效地节约内存空间。
例如,对付交流两个变量的值的操作,引用赋值的效率高于按值赋值的效率。

n=20000000;x=rand(200000.0, n);y=rand(200000.0, n);timer x, y = y, x; // Time elapsed: 1240.119 mstimer {&t=x;&x=y;&y=t;} // Time elapsed: 0.004 msDolphinDB 许可用户通过取消变量或函数定义来手动开释内存。
利用 undef 或 <variable>=NULL,详情请参考《DolphinDB 2.0用户手册》(https://www.dolphindb.cn/cn/help/index.html)。

相关文章