我突然产生了一个大胆的想法!

2020-01-08 10:36:24 +08:00
 sadfQED2

目前大家都说 python 太慢,性能瓶颈。。。但是如果用 c 开发效率又太低。因此,我突然灵光一现,如果我改一下 gcc,把 python 代码直接编译成二进制文件,那特么不是无敌了?

7235 次点击
所在节点    Python
29 条回复
MLawliet
2020-01-08 11:01:35 +08:00
是呗,那你倒是改啊
xpresslink
2020-01-08 11:01:57 +08:00
Cython 子解一下
sadfQED2
2020-01-08 11:49:28 +08:00
@xpresslink cython 也不能直接编译 python 代码呀
xmge
2020-01-08 11:50:09 +08:00
经常遇到一些情况

我有 xxx 想法?
我做出 xx 了,大伙看一下。

然后就有人评论:xxx 了解一下。

哈哈,然后就发现,问题原来可以这样解决
sadfQED2
2020-01-08 11:50:13 +08:00
@MLawliet 🐶🐶如果划水时间再多一点,我就开干
hronro
2020-01-08 11:54:37 +08:00
不如直接用 nim
coderluan
2020-01-08 12:00:22 +08:00
楼主认真的吗...... C 比 python 快,那是因为很多代码是手写的,你再改 gcc,python 代码也不能凭空多出这些手写的代码,还是得额外增加语法和代码,那就又是 Cython 了。
sadfQED2
2020-01-08 12:22:55 +08:00
@coderluan 但是能减少解释器的限制了呀
Sylv
2020-01-08 12:29:16 +08:00
xiri
2020-01-08 12:32:12 +08:00
并不是说编译成二进制就快了,还要看具体的实现原理,优化之类的
xabc
2020-01-08 12:34:08 +08:00
可爱
lynskylate
2020-01-08 12:42:54 +08:00
python 编译成二进制并不会更快,而且你说的也有了,nutika 了解下。
还有使用 type hint 编译成 c 再编译成 python 库来加速的 mypyc。
jaylee4869
2020-01-08 13:00:46 +08:00
用 Go 不就行了。。。
itfanr
2020-01-08 13:14:13 +08:00
Cython 了解一下
kwanzaa
2020-01-08 13:17:35 +08:00
不试试 Golang 吗?
Juszoe
2020-01-08 13:18:56 +08:00
不是有 pyc 字节码吗,已经可以了
Mutoo
2020-01-08 13:21:50 +08:00
很多情况下,你写的项目根本不需要 C 的效率。
pcmid
2020-01-08 13:23:40 +08:00
llpython (逃
fuxiuyin
2020-01-08 13:26:04 +08:00
Python 很大一部分性能消耗在 “寻址”,C++ 里面写 object.function(xxx) 可以直接编译为过程调用,Python 里面不能,最大的区别在于 C++ 在编译的时候明确的知道 object 是啥也就知道了 object.function 在哪,Python 不能,Python 运行的时候得去 object 的名字表里面找 function,整个寻找过程是字符串搜索。同样的,对象的属性等等也是,基本上只有局部变量和全局变量是在编译成字节码的时候可以确定位置的。
aloxaf
2020-01-08 14:47:33 +08:00
Cython 了解一下, nuitka 了解一下
直接编译成二进制速度确实会有提升, 然而也就百分之几吧.

Python 太过动态, 主要的消耗都在各种类型检查和转换上面, 这些即使你编译到二进制也是省略不掉的.
当然你可以进行类型标注, 辅助编译器进行优化, 然而这样你就重新发明了 Cython...

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/636041

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX