6 个版本

0.1.6 2024年4月21日
0.1.5 2024年4月17日

#417 in 数据结构

Download history • Rust 包仓库 20/week @ 2024-04-23 • Rust 包仓库 4/week @ 2024-04-30 • Rust 包仓库 5/week @ 2024-05-21 • Rust 包仓库 25/week @ 2024-07-02 • Rust 包仓库

每月331次下载

MIT 许可证

2MB
3.5K SLoC

ninjabook

Pypi Crates.io Documentation MIT licensed Rust

ninjabook 是用 Rust 实现的轻量级且高性能的订单簿,旨在处理二级和交易数据。

支持 Python 和 Rust 语言!

入门

examples 目录中找到 Python 和 Rust 的 hello_world 程序。

性能

运行了一组基准测试,展示了与简单的 Vec 实现和500级别固定大小的订单簿的实际案例场景。

基准测试使用 300,000 条二级订单簿数据事件。这些数据分为两部分

  • 前200,000个事件用于预热并验证所有订单簿版本发布相同的BBO和前5级。
  • 最后100,000个用于实际的基准测试。

测试的场景包括

  • 处理事件并流式传输最佳买卖价
  • 处理事件并流式传输前5个买卖价

以下是结果

bench 迭代次数 时间 ns/iter
ninjabook_bbo 100,000 5.0108 毫秒 50.108 纳秒
fixed_500_bbo 100,000 49.018 毫秒 490.18 纳秒
naive_bbo 100,000 90.552 毫秒 905.52 纳秒
ninjabook_top5 100,000 11.797 毫秒 117.97 纳秒
fixed_500_top5 100,000 54.693 毫秒 546.93 纳秒
naive_top5 100,000 95.644 毫秒 956.44 纳秒

贡献

为了添加更好的版本,创建一个新的文件,实现与 orderbook.rs 相同的方法(包括测试)并将改进的订单簿添加到 bench optimal_vs_naive.rs。只有性能优于 orderbook.rs 的订单簿将被考虑。最后,将性能日志添加到 Pull Request 中,可以直接复制粘贴 cargo bench 输出的内容。

任何问题、重构、文档和测试也欢迎。如果您有任何疑问,请随时在这里联系。

注意事项

只需要做一些外观上的改进。将 Orderbook 核心函数重构为 Trait,添加文档,并可能添加更多测试/基准/示例。

依赖关系

~9–19MB
~258K SLoC