10 个不稳定版本 (4 个破坏性更新)
0.4.0 | 2023年11月29日 |
---|---|
0.3.0 | 2023年11月26日 |
0.2.0 | 2021年4月22日 |
0.1.0 | 2021年4月21日 |
0.0.6 | 2020年7月30日 |
#4 在 #financial-data
27 每月下载量
16KB
384 行
QIF 解析器
非常高效的 QIF(Quicken 互交换格式)解析器,使用 Rust 编写。
什么是 QIF?
QIF 是 Quicken 发明的一种记录财务数据的格式。
您可以在这篇维基百科文章中了解更多信息。
此库能做什么?
此库将您的 QIF 数据作为字符串接收,解析它,并返回一些结构化数据以供进一步处理。
关于性能如何?
此存储库比较了用 Node.JS 和 Rust 编写的相同功能。如果您已安装 Node 和 Rust,可以通过执行 make compare
来运行两者。
剧透一下:对于 100 万个交易项目,Node 实现在大约 4 分钟 内完成,而 Rust 实现略多于... 1 秒。我们在这两个之间有 200 倍 的速度差异。真是太棒了!
从我 M1 Mac 的实际输出
Executing both
NODE: Done processing 1000 items. Time it would take to process 1M items: 238793ms
RUST: Done processing 100000 items. Time it would take to process 1M items: 1430ms
各种链接
https://en.wikipedia.org/wiki/Quicken_Interchange_Format
https://rust-lang.github.io/api-guidelines/checklist.html
https://stevedonovan.github.io/rust-gentle-intro/6-error-handling.html
变更日志
版本 0.3.0
- 添加对包含空行的 Amex QIF 文件的支持
版本 0.2.0
- 实现有用的特性,如 debug、format、clone、serialize 和 deserialize。
- 添加 Serde 作为依赖(原因如上所述)
- 移动文件,使其更干净,并非所有代码都在 lib.rs 中
- 破坏性更改:Qif 对象现在返回 "transactions" 向量,而不是 "items"。
- 添加与 Node.JS 的基准比较
版本 0.1.0
- 使代码更 Rust(使用 match 代替 if 语句)
- 支持维基百科条目中定义的所有 QIF 字段
- 更多测试
- 在返回的对象上返回 &str 而不是 String(日期除外)。这应该会极大地提高性能。
- 添加基准
版本 0.0.6
- 使用
f64
而不是f32
依赖项
~1.3–2.2MB
~41K SLoC