最近研究 python 的一个小失落

2016-08-01 08:02:33 +08:00
 SlipStupig

python 有一个很-O 选项我一直很好奇这个选项是干嘛的, help 写的是:

 -O     : optimize generated bytecode slightly; also PYTHONOPTIMIZE=x
-OO    : remove doc-strings in addition to the -O optimizations

python 优化选项可以产生更小的 bytecode 文件,我试着选了一下,确实小了一点,但是对性能提升并没有什么用,后来看官方邮件是这么回复的:


> Py_NoSiteFlag = 1...assuming you don't need to load site.py 
>
>     for example:</br>
>
> extern int Py_OptimizeFlag;
> extern int Py_NoSiteFlag;
> ...
> if( !Py_IsInitialized() ) {
>     Py_OptimizeFlag = 2;
>     Py_NoSiteFlag = 1;
>     Py_Initialize();

最后结论是 python 优化选项并没有什么用,想加速换 pypy

30806 次点击
所在节点    Python
268 条回复
wangxn
2016-08-01 08:43:54 +08:00
你理解错了…… slightly 是副词,意为这个选项可以轻微优化生成的字节码。
wangxn
2016-08-01 08:48:54 +08:00
以 CPython 的运行速度,做优化几乎是没什么作用的。瓶颈这么多,随便一个都拖后腿了。例如基于栈的字节码,简陋的 mark-sweep GC , GIL ,太多了。
RqPS6rhmP3Nyn3Tm
2016-08-01 08:55:48 +08:00
想快还得 JIT 啊,默认解释器就是慢没办法
serial
2016-08-01 09:00:02 +08:00
python 就不要求速度了,如果你不会 Shell ,可以拿 python 做自动化脚本 --- 特别是处理正则表达式。其他方面, python 都能做,做的都很垃圾 --- CPU 计算慢, IO 并发低,特别是标准库写的特别差。
kideny
2016-08-01 09:02:21 +08:00
@serial 为什么,每一门火的语言,都会有人喷啊。百度,不是用 python 很多的嘛!
serial
2016-08-01 09:07:49 +08:00
@kideny

这不是喷,这叫事实。每个语言都有其位置和商业模式。 python 的位置和商业模式就是: perl shell 替代品的运维脚本、非专业程序员的数据师的建模脚本。其他, python 只是重在参与。
SlipStupig
2016-08-01 09:09:11 +08:00
@kideny 这种人无视掉,估计从来没有写过超过 1000 行代码,你跟他没什么可争论的。

@wangxn 英语不好理解错误,抱歉
serial
2016-08-01 09:10:14 +08:00
@kideny

我就拿图像识别来说吧, python 的库非常多,(甚至神经网络的库都一大堆)。其中很多都是某些科学领域,但是非专业程序员写的,因为 python 对编程的要求门槛低。

但是当要把这些图像识别之类的程序拿来做服务,商用的时候,都会转用 C/C++ 来重写。 python 只是数学家提供的一个算法描述,它的速度不适合应用。
wander2008
2016-08-01 09:12:41 +08:00
@serial 老到之人。
wizardforcel
2016-08-01 09:14:38 +08:00
@serial 不就是速度慢嘛?? matlab 和 r 速度更慢,不照样有搞数据的人在用??
kingmo888
2016-08-01 09:22:04 +08:00
喷 python 就喷吧。
python 的定位能与 R 等同,高于 matlab 。
strwei
2016-08-01 09:38:43 +08:00
php 是全世界。。。。。(逃
xueqt
2016-08-01 09:44:10 +08:00
喷子到处都有,无视就好
ihciah
2016-08-01 09:45:45 +08:00
喷语言没有任何意义
mengzhuo
2016-08-01 09:51:33 +08:00
@serial 哈哈哈哈,这嘴(不)炮(动手)能力满点啊~
用 Python 做过两个游戏逻辑服务的表示, Python 的理念是,不够就堆机器。
扯什么性能,等你用 C*开发完,黄花菜都凉了。
yangtukun1412
2016-08-01 10:01:13 +08:00
"There are only two kinds of languages: the ones people complain about and the ones nobody uses."
WangYanjie
2016-08-01 10:20:23 +08:00
哪里告诉你可以提高性能了, help
est
2016-08-01 10:21:02 +08:00
当年大家也觉得 C 语言是做模型的,真正要“工业级”效率还是汇编。呵呵。
Ahri
2016-08-01 10:28:14 +08:00
Python 是有点慢, R 和 MATLAB 是真慢。
WhiteT
2016-08-01 10:35:33 +08:00
@serial Python 性能确实不如 C/C++ ,但现在的总体趋势难道不是提高机器硬件的水平以节约程序员的时间么?特别是处于业务扩张型的公司。不然为何如今那么多新兴互联网公司要选择 Python ?还是你觉得与其节约你的时间,还是节约机器开销更划算?当然我也同意随着用户量的提升,业务的稳定,转底层语言优化性能是个正确的选择,但这也需要平衡一下使用底层语言开发的成本和买机器的成本那个更低。而且私以为用户量到了因语言导致的性能瓶颈的公司并没有多少。

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

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

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

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

© 2021 V2EX