请教kdb+中mmax函数时间复杂度及性能优化方案
关于kdb+中
mmax函数时间复杂度的验证与优化咨询 实验背景与推测
我使用mmax函数计算长度为1000万的整数向量的移动最大值,重复运行10次统计总执行时间:
- 窗口大小为22时,总耗时2425毫秒
- 窗口大小为132时,总耗时15025毫秒,约为前者的6倍
由此推测mmax的时间复杂度为O(nw)而非O(n)(其中w为滑动窗口长度)。
同类产品对比实验
在具备内置分析功能的时序数据库DolphinDB中完成相同实验,结果显示其mmax函数无论窗口大小如何均保持线性复杂度O(n):
- 窗口大小为22时,总耗时1233毫秒
- 窗口大小为132时,总耗时1277毫秒
实验硬件配置
Server: Dell PowerEdge R630 Architecure: x86_64 CPU Model Name: Intel(R) Xeon(R) CPU E5-2650 v4 @ 2.20GHz Total logical CPU cores: 48 Total memory: 256G
实验环境设置
- kdb+:4.0 64位版本,使用2核CPU运行
- DolphinDB:Linux_V2.00.7(社区版:2核8GB内存),使用2核CPU运行
kdb+实现代码
// 启动服务器 rlwrap -r taskset -c 0,1 ./l64/q -p 5002 -s 2 // 测试代码 a:10000000?10000i \t do[10; 22 mmax a] 2425 \t do[10; 132 mmax a] 15025
DolphinDB实现代码
// 启动服务器 rlwrap -r ./dolphindb -localSite localhost:5002:local5002 -localExecutors 1 // 测试代码 a=rand(10000,10000000) timer(10) mmax(a,22); 1232.83 ms timer(10) mmax(a,132); 1276.53 ms
咨询问题
恳请kdb技术专家确认mmax函数的时间复杂度,若其确实为O(nw),是否有第三方插件可优化其性能?
内容的提问来源于stack exchange,提问作者DanielSmith
相关产品推荐
相关产品推荐

