之前还在读研的时候有一个图论课,课上主要用 Python 写图算法。
但是数据集一大 Python 的性能你们懂的,到后面测试一次就要一分多钟。
有点受不了就用 C# 和 Rust 各写了一个,理清算法之后再照搬到 Python 。
当时最大的数据集下,一样的算法一样的机器,用 hyperfine 测试启动到结束的时间,性能大概是这样的
- Python 3.11: 30s
- C# (.NET7 AOT): 1.5s
- Rust: 750ms
毕业之后这段代码就搁我电脑里没怎么动过,但是每年 .NET 版本更新我都会拿出来再跑一下看看性能,去年 .NET 8 更新之后 C# 版本的运行时间降低到了 1s ,Rust 没什么变化。
今年 .NET 9 更新了我就又拿出来跑了一下,Rust 没变,C# 版时间降低到了 660ms ,超越了 Rust ,让我非常不解,按理说一个带运行时的 GC 语言无论如何性能都不会比跑在裸机上的 Rust 快。
问了几个群友,有人说 Rust 的默认 HashMap 性能不行,但是换 ahash 之后也没什么变化。
代码在这里:
https://gist.github.com/Xerxes-2/4c73294601dca27d3d6dc7eeecc78ba1请问 Rust 版哪里写的有问题还能优化吗
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
https://www.v2ex.com/t/1094651
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.