因为网友对“百万数据跑两秒"有疑问,经过一番交流后,才发现原来是我没有注明是首次数据加载过程中进行的计算,否则百万数据2秒反而是显的慢了,对此重新更新了相关描述:“AMD 7950x 实测:A股全市场(1913万日K线)仅加载全部日线计算 20日 MA 并求最后 MA 累积和,首次执行含数据加载 耗时 6秒,数据加载完毕后计算耗时 166 毫秒"。感谢热心网友:-)
测试代码如下:
from hikyuu.interactive import *
import time@spend_time
def func():cnt = 0x = 0for s in sm:k = s.get_kdata(Query(0))tmp = MA(k.close, n=20)cnt += len(k)if len(tmp) > 0:x += tmp[-1]return cnt, xcnt = func()
print(cnt)cnt = func()
print(cnt)
测试使用了 AMD 7950x,香橙派5 分别进行,操作系统均为 Ubuntu22.04,仅加载全部日线数据,证券总数7556支,K线Bar总量 1915万7千多条,分别使用 MYSQL 数据存储和本地 HDF5 数据存储。其中,MYSQL 运行于香橙派5 Plus 32G 开发板,hdf5 均为本机存储。AMD 7950x 配置 HP-FX900 Pro 4T NVME 硬盘,香橙派均为梵想 2T NVME 硬盘。
测试结果如下:
MYSQL首次数据加载过程中计算耗时 | HDF5首次数据加载过程中计算耗时 | 数据加载完毕后计算耗时 | |
---|---|---|---|
AMD 7950x | 11.245 秒 | 6.43秒 | 0.1604 秒 |
OrangePi5 RK3588s | 21.573 秒 | 24.655 秒 | 0.668 秒 |
注:香橙派5 RK3588 为 8核64位 ARM处理器,4核Cortex-A76和4核Cortex-A55的典型大小核架构,大核主频2.4GHz,小核主频1.8GHz。