>  기사  >  백엔드 개발  >  为什么苹果新语言 Swift 的 RC4 运算效能是 Python 的 220 倍?

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

WBOY
WBOY원래의
2016-06-06 16:22:271181검색

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的四则运算有多么糟糕。
성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.