首页 > 后端开发 > Golang > Rust、Go、C:数据库和物联网应用程序性能基准

Rust、Go、C:数据库和物联网应用程序性能基准

Linda Hamilton
发布: 2025-01-19 18:04:12
原创
156 人浏览过

Rust:通过数据库和物联网应用程序进行性能和安全性分析

Rust 因其安全性和速度的结合而受到赞誉 [1],显示出作为专业级语言的前景越来越大 [3, 8]。 然而,2021 年的调查 [3] 强调,尽管工作场所的使用率显着上升(42% 至 59%),但行业采用率仍是主要关注点(38%)。 本研究通过将 Rust 在数据库 (Redis) 和 IoT (ECHONET Lite) 两个关键应用领域的实际实现与 C 和 Go 进行比较,直接解决了这个问题。

方法论:我们构建了两个应用程序,镜像 C 和 Go 中的规范,以评估 Rust 的效率和性能。 数据库应用程序利用了 Redis [19],并与非官方的 Rust [21] 和 Go [23] 实现进行了比较。 IoT 应用程序涉及实现 ECHONET Lite 协议 [9],比较 C [11]、Go [13]、Rust [12] 和 Python [14] 实现。

评估一:数据库应用(Redis)

此评估使用 redis-benchmark 在官方 C Redis 实现 [19]、Rust 子集 (mini-redis) [21] 和 Go 示例实现 (go-redis-server) 上测试 SET/GET 命令23]。 基准测试使用 50 个线程运行,每次运行迭代 10,000 次。 由于mini-redis的功能有限,评估仅关注性能,使用第99个百分位(p99)作为关键指标。

Rust vs Go vs C: Database and IoT Application Performance Benchmarks

演出排名:C>去>铁锈

结果(如下图所示)清楚地表明了 C 的卓越性能,大约比 Go 和 Rust 快三倍。 虽然 Go 和 Rust 实现都是子集,但差异突出了潜在优化的领域。

Rust vs Go vs C: Database and IoT Application Performance Benchmarks

Rust 性能分析:Rust 的 SET 和 GET 命令分别比 C 慢 28% 和 41%,并且比 Go 慢得多(分别慢 78% 和 88%)。这可能归因于 mini-redis 使用的 Tokio 库 [20] 的优化不完整。 此外,对 HashMap [17] 等标准库组件的依赖可能会影响性能。

Go 性能分析:Go 的 go-redis 表现出奇的好,显着超过 Rust 的性能,同时与 C 保持竞争力。go-redis-server 实现的简单性,仅依赖于标准库,表明了进一步优化的潜力。

评估2:物联网应用(ECHONET Lite)

此评估比较了 C、Go、Rust 和 Python 中 ECHONET Lite [9] 客户端-服务器实现的实现效率和性能。 这些实现共享一个共同的设计,但不同语言之间存在一些功能差异(见下图)。

Rust vs Go vs C: Database and IoT Application Performance Benchmarks

执行效率(LOC):Python > Rust ≈ Go > C

使用 Tokei [16] 进行代码行 (LOC) 分析揭示了 Python 的效率,紧随其后的是 Rust 和 Go,其中 C 需要最多的代码。 (注意:自动生成的代码被排除在外。)

Rust vs Go vs C: Database and IoT Application Performance Benchmarks

Rust 实现分析:Rust 的 LOC 计数与 Go 相当,反映了该语言固有的复杂性以及开发人员在编译器及其严格语义方面面临的挑战 [5]。 处理特征和生命周期的限制导致设计妥协。

C 实现分析:C 的高 LOC 数量源于包含独立的库和包装器以实现可移植性。

Go 实现分析:Go 的效率归功于其简单的实现和丰富的标准库,允许直接翻译 C 设计。

Python实现分析:Python的低LOC体现了该语言的灵活性和简洁性。

表现排名:Go> C>生锈>蟒蛇

性能是使用 time 命令测量的,执行 ECHONET Lite 控制器-对象交互的 10,000 次迭代。 Go 表现出了卓越的性能,显着超过了 C、Rust 和 Python。

Rust vs Go vs C: Database and IoT Application Performance Benchmarks Rust vs Go vs C: Database and IoT Application Performance Benchmarks Rust vs Go vs C: Database and IoT Application Performance Benchmarks

Rust 性能分析:Rust 的性能落后于 Go 和 C,可能是由于 HashMap 和 Mutex 等标准库组件的限制以及 UDPSocket 施加的限制。

C 性能分析:虽然 C 在用户时间方面表现出色,但其系统时间明显高于 Go 和 Rust,这表明了潜在的优化领域。

Go性能分析:Go的优越性能凸显了其处理异步UDP通信的效率。

Python性能分析:Python的性能明显低于其他语言。

结论

从“Better C”的角度来看,Go 成为了一个强有力的继承者,甚至有可能超越 Objective-C。 Rust 在提供安全性和速度的同时,也带来了生产力、互操作性和编程灵活性方面的挑战。 它的编译器密集性质和利用现有资产的局限性阻碍了它的采用。 Go 的执行效率和稳定的性能使其成为通用应用程序的可靠选择。 有必要进一步调查 Rust、C 和 Go 中发现的性能瓶颈。

[1] - [27]:原文中提供的参考文献。

以上是Rust、Go、C:数据库和物联网应用程序性能基准的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板