【Rust日报】2023-10-21 使用 Rust 分析数据速度提高 180,000 倍

2023-10-25 20:29:16 浏览数 (1)

使用 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 用户体验、添加的基本功能以及持续的性能改进等。

0 人点赞