ninja
和 make
是一样属于 build system,不过提供了更好的编译速度,尤其对于大型开发项目,可以节省大量的编译时间。
使用 ninja 加速 c++ build
可预先分配空间的 std::priority_queue
c++
标准库 <queue>
提供了优先队列 priority_queue
,以 log(1)
的算法获取队列头部、并以 log(n)
的算法插入元素。其原型为
|
|
c++ 高性能技巧
参考链接 C++ 优化点
c++ 使用 google benchmark
在低延迟场景中,我们对性能有极致的要求。为了方便对比不同函数的开心,需要借助一些测试手段。这些测试的基本流程是:
- 在函数调用开始是计算 rdtsc 初始值
- 函数调用结束后,计算 rdtsc 的差值
- 循环以上流程若干次
- 最终得到一个平均的函数开销时间
整个测试流程其实是非常的标准化,我们完全可以利用一些框架进行快速的测试。比如我现在使用的 google benchmark
。
构建指数权重ib weight
中金所推出了多个股指期货合约,这些合约以相应的股票指数为基础标的。为了更好的预测股指期货波动,我们需要更准确的指数信息。而构建指数的基础数据包括:
- 成份股
- 成份权重
- 基准日期的自由流通市值(中证指数)
无论对于历史数据的复原,还是实盘数据的更新,一份合理、准确的指数构建都至关重要。上述三个项目当中,尤其以指数的成份权重尤为关键。
中证指数官网有偿提供每日权重的更新数据,不过收费巨贵。为此,我们可以通过模拟中证指数的构建方法和计算规则,生成一份准确的指数数据。具体的规则,可以参考《中证指数有限公司股票指数计算与维护细则V13.1》
我们的工作主要有部分:
- 复原历史指数权重数据
- 实现每日权重数据更新
- 根据样本权重,利用逐笔成交数据(
last_px
)、快照数据(vwap
)计算得到每一个点位上的指数价格