V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
uppu
V2EX  ›  问与答

Python VS C,C++,GO, Java ,JavaScript, PHP .性能最差的是 Python

  •  
  •   uppu · 2017-02-14 21:15:40 +08:00 · 5054 次点击
    这是一个创建于 2843 天前的主题,其中的信息可能已经有所发展或是发生改变。
    32 条回复    2017-06-08 15:28:25 +08:00
    uppu
        1
    uppu  
    OP
       2017-02-14 21:18:11 +08:00
    点击相应的语言会显示源码,可以自己测试
    uppu
        2
    uppu  
    OP
       2017-02-14 21:19:36 +08:00
    轻喷
    clino
        3
    clino  
       2017-02-14 21:20:42 +08:00
    我记得在 https://www.techempower.com/benchmarks/ 这里看到的 python 一般在中游 , 比的是 web framework
    duola
        4
    duola  
       2017-02-14 21:24:17 +08:00
    我正在学 python ,你让我很难过。
    northisland
        5
    northisland  
       2017-02-14 21:26:07 +08:00
    这个不假,
    但是人生苦短,我还是喜欢 Python 。
    liujinlingchn
        6
    liujinlingchn  
       2017-02-14 21:28:22 +08:00 via Android
    依然前五,性能上去别的语言还怎么玩
    metaquant
        7
    metaquant  
       2017-02-14 21:29:13 +08:00
    这只是一个机器时间与人类时间,谁更宝贵的权衡而已
    linboki
        8
    linboki  
       2017-02-14 21:32:13 +08:00 via Android
    语言本身没有性能的说法,只是实现上有性能的差异。 CPython 和 v8 当然没法比,只要你愿意(投入金钱和时间), 请顶尖团队开发一个比目前 java 还快的 jit 实现也不是不可能的
    bingwenshi
        9
    bingwenshi  
       2017-02-14 21:32:33 +08:00
    但是人生苦短,我用 Python
    bingwenshi
        10
    bingwenshi  
       2017-02-14 21:33:41 +08:00
    单纯比快慢没有意义,每个语言都有自己的特色以及适用的场景,为了求快可以去写汇编
    uppu
        11
    uppu  
    OP
       2017-02-14 21:40:55 +08:00
    最近在研究神经网络跟深度学习,本身需要大量的计算工作,很多项目还是选 Python 为开发语言,这是我不解的地方
    uppu
        12
    uppu  
    OP
       2017-02-14 21:42:40 +08:00
    或许如上面几位所说,为了省开发时间,计算问题已经是次要的
    clino
        13
    clino  
       2017-02-14 21:44:43 +08:00
    @uppu 我猜因为 python 开发效率高,先快速开发出来,如果需要优化的针对优化一下,不行可以上 pypy cython 之类的,实在不行就换语言重写,估计现在硬件发展使得不用换语言重现也能接受了
    forrestchang
        14
    forrestchang  
       2017-02-14 22:17:47 +08:00
    @uppu 设计到计算部分的话一般都是拿 C++ 来写的吧。
    weyou
        15
    weyou  
       2017-02-14 22:31:50 +08:00 via Android
    因为 Python 有很多知名的用于科学计算的库,比如 NumPy, SciPy, Matplotlib ,这些都是用 C/C++来实现的模块,所以速度方面不是问题。结合 Python 快速开发的特性让它在科学计算领域里成为第一梯队的编程语言。
    WildCat
        16
    WildCat  
       2017-02-14 22:39:51 +08:00
    ericls
        17
    ericls  
       2017-02-14 22:42:58 +08:00 via iPhone
    @uppu 那是因为 Python 只是做 binding
    grimpil
        18
    grimpil  
       2017-02-14 22:48:33 +08:00 via Android
    时间是一方面,搞得爽是另一方面。
    今天情人节,你们猜我说的啥
    Cbdy
        19
    Cbdy  
       2017-02-14 23:02:22 +08:00 via Android   ❤️ 1
    python 那么动态,设计之初就是胶水语言,要那么快干嘛?优化在瓶颈做才有意义。比如 git 是 c+sh 开发的, c 做性能, sh 做胶水

    js 快是因为 v8 ( v8 实现 js 的时候实际是编译运行的), php 不了解,剩下几个都是编译语言(或 jit ),没有那么太多运行时的东西。
    python 不应该和他们比运行速度,应该比开发速度,比灵活简捷,比开箱即用的特色库
    cuebyte
        20
    cuebyte  
       2017-02-14 23:07:46 +08:00
    这帖子毫无意义啊,一个没有 JIT 的解释型语言,怎么搞得过编译型或是有 JIT 的语言。你应该和 clojure, Lua5.3 , ruby , erlang/elixir 来比。
    eaosn622
        21
    eaosn622  
       2017-02-14 23:13:47 +08:00 via iPhone
    毕竟除了性能还得考虑其他嘛 python 开发效率高啊 再者对于初创公司来说人比机器贵啊 人生苦短 我用 python
    mingyun
        22
    mingyun  
       2017-02-14 23:42:53 +08:00
    但是 python 方便
    marenight
        24
    marenight  
       2017-02-15 00:17:46 +08:00
    很多 python 的库是用 c 写的。
    wwhc
        25
    wwhc  
       2017-02-15 07:37:56 +08:00
    看评测 python 的性能连 perl 都不如啊?
    phrack
        26
    phrack  
       2017-02-15 08:13:04 +08:00 via Android
    cpython 以前的开发都不太注重性能的, 3.4 以后才开始有优化的迹象,据说单线程很牛逼了,多线程因为 gil 的原因不可能干的过其他语言了,不过 guido 也说了,除非有人能提出一个办法并简单实现一下,要求在不影响单线程性能和稳定的情况下去掉 gil ,否则不考虑去掉 gil 。
    ytmsdy
        27
    ytmsdy  
       2017-02-15 08:36:02 +08:00
    这属于纯粹学术派的讨论,其实实际上没啥太大的意义。
    大部分人写的程序,因为语言瓶颈而导致效率不行的几乎没有。
    wellsc
        28
    wellsc  
       2017-02-15 08:40:02 +08:00 via Android
    @cuebyte 此处应去掉 erlang elixir
    cljnnn
        29
    cljnnn  
       2017-02-15 08:53:03 +08:00 via Android
    Python 主要是作为胶水语言,可以调用很多其他语言写的模块或工具,功能啊 强大。性能你看也没有弱到哪儿去,又不是差数量级。而硬件都是数量级发展(在此鄙视牙膏厂)
    cuebyte
        30
    cuebyte  
       2017-02-15 12:13:35 +08:00
    @wellsc 为什么呢?
    @uppu clojure 能吊打 python 我知道,可是 ruby 居然也。。。我记得做 leetcode 的时候, py 能吊打 ruby 。

    另外如楼上很多人所说的一样,性能敏感的地方会用 c 拓展的啦,以及有 numba 和 theano 这样的东西存在。
    在科学计算领域,性能不会是短板。
    在 web 端,有 uvloop 这样的大杀器,和 nodejs 比一比还是没问题的。
    shyling
        31
    shyling  
       2017-03-29 19:01:14 +08:00
    @cuebyte 不存在的
    wind3110991
        32
    wind3110991  
       2017-06-08 15:28:25 +08:00
    然后呢,想说明什么?
    任何一门语言都有优势所在,要考虑到所应用的场景和数量级,程序和系统的复杂度
    一般来说,python 的计算和执行效率,对于非大型系统的 99%的场景都足够了;
    何况,对于系统和程序而言,IO 才是最大的瓶颈
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5839 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 37ms · UTC 03:10 · PVG 11:10 · LAX 19:10 · JFK 22:10
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.