使用 Rust 分析数据速度提高 180,000 倍
假设有来自在线考试的数据,原始数据如下:
代码语言:javascript复制[
{
"user": "5ea2c2e3-4dc8-4a5a-93ec-18d3d9197374",
"question": "7d42b17d-77ff-4e0a-9a4d-354ddd7bbc57",
"score": 1
},
{
"user": "b7746016-fdbf-4f8a-9f84-05fde7b9c07a",
"question": "7d42b17d-77ff-4e0a-9a4d-354ddd7bbc57",
"score": 0
},
/* ... more data ... */
]
给定大小 k,哪个 k 问题与整体表现的相关性最高? 我们称为 k-CorrSet
问题。Python 程序在 k=5 时需要 2.9 年才能完成。Rust 程序在同一数据集上只需要 8 分钟。 这大约是 180,000 倍的加速。关键优化:
- 使用 Rust 的编译器优化
- 对数值而不是字符串做哈希
- 使用索引向量代替 HashMap
- 使用位集进行有效的成员资格测试
- 使用 SIMD 实现高效的位集
- 使用多线程将工作分配给多个核心
- 使用批处理来避免工作分配中的瓶颈
GitHub 链接,https://github.com/willcrichton/corrset-benchmark
PowerDNS 开始使用 Rust
PowerDNS Recursor发布 v5.0 的第 2 个 alpha 版本。其处理 YAML 文件的代码是用 Rust 实现的。
详细信息,https://mailman.powerdns.com/pipermail/pdns-announce/2023-October/001284.html
Yazi 终端文件管理器发布 v0.1.5
Yazi 是一个 Rust 实现的终端文件管理器,基于非阻塞异步 I/O。 它旨在提供高效、用户友好且可定制的文件管理体验。这是有史以来最大,周期最长的更新。 该版本带来了许多有意义的变化,包括新的主题系统、改进的 Windows 用户体验、添加的基本功能以及持续的性能改进等。