登录  /  注册

为什么苹果新语言 Swift 的 RC4 运算效能是 Python 的 220 倍?

php中文网
发布: 2016-06-06 16:22:27
原创
1078人浏览过

Swift 是解释型语言吧,真能做到那么快吗,或者210倍只是特殊的某些功能上的速度对比,四则运算应该提升不了这么多吧?
为什么苹果新语言 Swift 的 RC4 运算效能是 Python 的 220 倍?

回复内容:

与提问者的直觉相反,四则运算恰恰是Python(相对于C)最慢的部分。一个整数a+b在Python VM里要经过大约上百行的C代码,其中包括bytecode解释,动态类型带来的间接调用,对bigint的无缝支持等等。要在四则运算上比Python快上百倍,只需要性能不比C差出数量级就可以。这也是各种JIT最喜欢拿四则运算作演示的原因。

而实际的UI代码中,用户逻辑使用的语言,性能其实无关紧要。因为大部分用户逻辑无非是“当用户操作A发生时改变UI元素BCD的状态”、“从服务器返回结果中提取字段XYZ并设置到对应的UI元素”等等,胶水代码而已。平均每执行一行用户代码,框架代码要执行几百行,这只要在debugger中step into框架代码就能了解。因此只要框架用高效的语言实现,用户代码即使用慢上百倍的Python也无所谓。 Benchmark这个东西,如果没有公布:
1.实际的测试用例
2.各种语言的具体实现

随便怎么吹都可以 Swift 既然是编译到机器码运行的,那就不该和跑在官方解释器上的 Python 比较。
Python 也能编译,用的也是 LLVM。Swift 和这样的 Python 比较才有意义。

包的名字叫 Numba,你在函数上方添一行 decorator,运行的时候就能把这块函数 JIT 编译成机器码。
就题主关心的四则运算来说,举加法的例子,用了 Numba 的 Python 比 C 都快。
为什么苹果新语言 Swift 的 RC4 运算效能是 Python 的 220 倍? 这有什么奇怪?!主流编程系统中找比CPython慢的一直都很难 你好意思拿个编译语言跟脚本语言比么? 洗洗睡吧,当然是特定环境下的特定跑分。pypy 跑斐波那契数列就比 cpython 快到不知道哪里去了,线上有几家在用? 忽悠果粉无所不用其极啊

这一次真心鄙视了 swift编译出来的是机器码,python(应该是CPython)编译出来的是python虚拟机运行的字节码。

那么在绝大多数场景下,运行效率肯定是存在巨大差异的。但我觉得210倍这个值是在某个特定的特别能显得swift快的场景下的结论。

其实swift和python的可比性没有那么大,应该和golang比才是真的大丈夫 是可能的,推荐你了解下LLVM这个东西,应该是先编译为一种中间表达,但是随后进一步编译为纯机器码。本质上跟C和ObjC编译出来的没区别,都是汇编机器码,所以效率问题可以忘掉了。
而当你需要即时出结果,就像解释型脚本语言那样时,切换两遍编译为一遍,改输出机器码为输出中间表示给解释器即可。LLVM真的是革命性的东西 图片中的英文,意思是“RC4加密”,这是一种密码级的伪随机数生成算法,主要性能开销,还真就是四则运算。

由此可见,Python的四则运算有多么糟糕。
智能AI问答
PHP中文网智能助手能迅速回答你的编程问题,提供实时的代码和解决方案,帮助你解决各种难题。不仅如此,它还能提供编程资源和学习指导,帮助你快速提升编程技能。无论你是初学者还是专业人士,AI智能助手都能成为你的可靠助手,助力你在编程领域取得更大的成就。
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
关于CSS思维导图的课件在哪? 课件
凡人来自于2024-04-16 10:10:18
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2024 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号