Heim  >  Artikel  >  Backend-Entwicklung  >  为什么苹果新语言 Swift 的 RC4 运算效能是 Python 的 220 倍?

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

WBOY
WBOYOriginal
2016-06-06 16:22:271181Durchsuche

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的四则运算有多么糟糕。
Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn