前排先打广告:
QUANTAXIS量化金融策略框架,是一个面向中小型策略团队的量化分析解决方案. 我们通过高度解耦的模块化以及标准化协议,可以快速的实现面向场景的定制化解决方案.QUANTAXIS是一个渐进式的开放式框架,你可以根据自己的需要,引入自己的数据,分析方案,可视化过程等,也可以通过RESTful接口,快速实现多人局域网/广域网内的协作
这段时间在进行全市场选股策略,通过对于mongo的监测, 认为查询速度远远没有达到硬件瓶颈, 于是开始思考如何优化:
在1.0.24版本以前, QUANTAXIS是这样对于全市场进行查询的:
- 对于单个股票写查询语句
- for循环进行多个股票代码的遍历
3.返回结果
这是查询的时候的数据库监控
通过对于net out
这一项的观察, 我们发现数据的传输速度只有10 mb/s 这个是非常糟糕的, 毕竟我这个网卡是Killer千兆网卡,socket内循环速度不应该只有10mb/s
考虑以下两种优化办法:
-
进行异步操作, 对于mongodb 可用的库有motor 但是还没有完全摸透
-
减少查询次数,让mongodb自行优化查询语句:
所以就有了这个最偷懒的做法:
cursor = collections.find({
'code': {'$in': code}, "time_stamp": {
"$gte": QA_util_time_stamp(start),
"$lte": QA_util_time_stamp(end)
}, 'type': frequence
})
让我们来看一下效果提升:
优化后
我们可以观察到 优化过后,查询的传输速度达到了30mb/s左右
再看一下任务管理器:
任务管理器
mongo向外的传输速度确实达到了34mb/s左右
以上就是1.0.24 对于QUANTAXIS的优化, 虽然很简单的改进,但是确实优化的全市场查询的速度
更多关于QUNATAXIS 可以访问 QUANTAXIS
yutiansut
2018/4/23
网友评论