为什么苹果新语言swift的rc4运算效能是python的220倍?

swift 是解释型语言吧,真能做到那么快吗,或者210倍只是特殊的某些功能上的速度对比,四则运算应该提升不了这么多吧?回复内容:
与提问者的直觉相反,四则运算恰恰是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 都快。
这有什么奇怪?!主流编程系统中找比cpython慢的一直都很难
你好意思拿个编译语言跟脚本语言比么?
洗洗睡吧,当然是特定环境下的特定跑分。pypy 跑斐波那契数列就比 cpython 快到不知道哪里去了,线上有几家在用?
忽悠果粉无所不用其极啊这一次真心鄙视了
swift编译出来的是机器码,python(应该是cpython)编译出来的是python虚拟机运行的字节码。那么在绝大多数场景下,运行效率肯定是存在巨大差异的。但我觉得210倍这个值是在某个特定的特别能显得swift快的场景下的结论。其实swift和python的可比性没有那么大,应该和golang比才是真的大丈夫
是可能的,推荐你了解下llvm这个东西,应该是先编译为一种中间表达,但是随后进一步编译为纯机器码。本质上跟c和objc编译出来的没区别,都是汇编机器码,所以效率问题可以忘掉了。而当你需要即时出结果,就像解释型脚本语言那样时,切换两遍编译为一遍,改输出机器码为输出中间表示给解释器即可。llvm真的是革命性的东西
图片中的英文,意思是“rc4加密”,这是一种密码级的伪随机数生成算法,主要性能开销,还真就是四则运算。由此可见,python的四则运算有多么糟糕。

Posted in 未分类

发表评论