Rust和C++谁更快?

作者: JeyesHan分类: 计算机技术 发布时间: 2023-12-03 22:44:08 浏览:26775 次

Rust和C++谁更快?

丑唉:
rust虽然编译了,但实际是用cargo运行的,不是直接运行二进制程序。说c++没有编译优化的人,没注意到同样rust也没有开启编译优化吗?说这些都没用,amd CPU有个bug,导致io调用速度rust和c++都不如python快,rust和c++其实运行速度是一个级别的,个别功能或代码可能一个比另一个强,但也差不了多少。

【回复】确实,前几天我刚测试文件io,c++不如python快,我还很纳闷,问chatgpt说是实现io的方式不同,python调用io是c实现的
【回复】回复 @陈哥霸世 : AMD 某些版本的cpu的确有个bug,rust和c++调用io速度还不如python,
【回复】难道io不是最终需要走内核代码吗?r3的程序能执行io指令?他用什么实现都是走内核代码,这和调用c,还是c++有什么区别?
何不忆往昔:
非常“公平”的两边都不开优化。 但如果公平的两边都开优化,恐怕能得到两个0ms吧。

【回复】回复 @JeyesHan :gcc我不清楚,clang的不开-o优化的话输出的debug二进制是很慢的,远慢于cargo的debug,这件事更多的应该是大家带的debug信息不同。但是同样程序c++开-o3之后通常比rust release快。考虑执行速度这个事情到release上才有意义,你这个测试基本没意义
【回复】回复 @JeyesHan :你们喜欢在《公路》上开《高铁》还是开《汽车》?[doge][doge]
【回复】确实,C++就变成0了。不过Rust没有试过,加上-C 3吗?
oldyan_cpp:
典中典之不开优化测速度。我现在开发一款bilibili_gcc编译器,但是它设置O0的时候就启动gcc的O1优化,设置O1就启动gcc的O2优化。所以我瞬间就得到了一门更快的编程语言?

飞不出安全距离的TOW:
不是,你不用c艹的指针和内存分配你给我写个能内存泄漏的程序出来,c艹的速度rust比不了毕竟rust编译器就是基于llvm的,在一个你这个测试代码是不是有点太简单了,这种东西把pythom或者golang拿过来跑速度也差不多吧

【回复】回复 @嘶嘶呀酥 :而且比较抽象的是,这么好的语言,为什么没有大规模使用,是因为太新了还没来得及换吗,2006年推出的语言,java推出不久就在网页/服务器/浏览器上大量使用,go推出不久b站等一系列公司就把服务器程序换成go语言开发的,那么rust呢,至少到目前为止,没有任何一个主流领域被rust占领,虽然我承认rust是一门优秀的语言,而且,你用shell脚本吗,就是那个后缀是.sh的东西,那玩意限制不比指针多,不比指针难用
【回复】回复 @rich区孔乙己 :不是说rust不行,是说现在的rust不行,前几天rust作者是rust的安全性比c艹好,但是到内存了,哪有什么安全不安全一说,其次,并不是说哪个语言好与不好,只是说针对人群,rust更容易新人上手,而c++具有强大的内存操作能力(比rust的权限内存好),如果举个例子,c++就像双刃剑,而rust只是把对着自己内面磨钝了一些
【回复】回复 @JeyesHan :优化一下,不过还是那句话,python的性能确实不咋样,而且你可以试试c语言写并且用gcc编译
财可通神:
先不说都没开O3优化,C++开O3就是0,因为直接编译器干掉循环了。而且,C++优化是真的野。

【回复】只有你想不到,没有他优化不掉的代码[doge]
沧浪亭歌:
这种比较毫无意义,别的不说rust编译器基于llvm,就这个就导致它不可能比c++更快[吃瓜]

【回复】回复 @__Bili_Bili__ :c++现在还是可以的,实现内存安全也是和rust差不多,比如shadow,所有权,option,c++17都抄的差不多了,但是吧c++设计理念是给程序员最大的自由,所以就会有好多人不用[吃瓜]
【回复】回复 @rich区孔乙己 :因为llvm是一个编译器合集,它只能接受中间表达(IR),clang编译器其实是个前端,将c++代码转换为IR,再给llvm编译优化,rust编译过程和这个完全一样。粗暴点说都是IR进行优化,怎么可能一个比另一个更快呢。
【回复】rust在某些场景可以做到比比c++快,因为rust消除了空指针和非法引用,编译器或者说llvm在优化时相对cpp可以拿到更多信息从而进行更多优化
eriklee1895:
你这个测试一点也不科学 先不说你这测试代码太过简单 测试得release编译再比较

【回复】用release怕不是1毫秒都用不了
你干嘛哈嗨呦啊:
c++使用cout和endl比printf和\n慢很多,endl会重新刷新缓冲区

【回复】为啥我再看这个视频,内容不一样了,没比输出函数了[妙啊],我记错了吗,还是之前没仔细看代码
【回复】回复 @南煌晗曦 :比原生cout和printf快很多
pp队长D:
内存泄漏是你的问题,不是语言的问题

【回复】80%都有问题的时候,就是语言设计的问题
【回复】又在吹牛了,Windows内核开发人员没你有水平吗
【回复】回复 @巴拉巴拉丨 :人问题
昭裳卿:
你可以加个选项 -C opt-level=3,这样编译器或许可以展开循环,减少运行时计算

【回复】这可不仅是循环展开了,llvm的pass直接把那个循环的结果在编译时求出来写上去了,运行时就只剩下个输出了
简单忙2:
c++堆内存分配比rust 更可控。使用堆是有性能损耗的

矢量工坊宝儿姐:
不开优化,没有可比性,开优化后,理论上rust要比c++慢一丢丢。

天天安逸的旋律:
这就能代表语言速度了?我用Go语言在5700X上运行循环累加一秒大约循环了49亿次,能说明Go语言是最快的语言吗[笑哭]

Kotlin和Rust双料特工:
这种性能测试只看代码运行结果没有意义的,还是要看最终生成的汇编结果,C++可以利用ub实现最极致的终端性能优化,rust可以利用代码分析做最极致的编译前端优化,两种策略在不同的上下文下运行结果都可能不一样的

编程语言 C++ C/C++ RUST 2023热门年度盘点 科技2023年终总结

如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!