#interchange #parser #financial-data #finance #qif #quicken

bin+lib qif_parser

此库通过解析 Quicken 互交换格式(QIF)文件

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 每月下载量

MIT 许可证

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