V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
minchieh
V2EX  ›  程序员

Python 真的和 c 一样么

  •  
  •   minchieh · 20 小时 30 分钟前 · 4767 次点击

    廖雪峰 python 教程中的一段话:“C 程序的运行时间需要 0.001 秒,而 Python 程序的运行时间需要 0.1 秒,慢了 100 倍,但由于网络更慢,需要等待 1 秒,你想,用户能感觉到 1.001 秒和 1.1 秒的区别吗?”

    从时间上我觉得他说的对,确实不用太在乎他的执行速度,毕竟短板在其他的 io 上(如网络)
    但是 cpu 呢,如果同样服务 1000 个客户端,c 只要 RK3588 就可以了,而 python 需要 12 代 I7 这成本就高了,是不是,特别是我们这种不停强调降本,低价吸客户的公司

    其实我也不关注廖说的 1.1 秒还是 1.01 秒,只是如果完成这个工作,一个 cpu 花费 20hz ,一个花费 2000hz ,我就扛不住了,作为服务端程序,我得多堆叠 100 台服务器才能完成

    Benchmarks Game - Python 3 vs C++ Performance Comparison

    59 条回复    2025-09-29 00:41:09 +08:00
    realpg
        1
    realpg  
    PRO
       20 小时 28 分钟前   ❤️ 11
    这种问题你都要问, 说明你的知识储备量和公司职位不需要考虑这些问题
    什么写的快用什么就行了

    如果真需要考虑这种问题, 听架构的就完事
    wu67
        2
    wu67  
       20 小时 28 分钟前
    web 应用确实是这样的.
    但是如果是多个任务流水线式执行起来呢? 如果是纯离线应用处理数据呢? 运行慢这个弊端就暴露出来了
    javalaw2010
        3
    javalaw2010  
       20 小时 24 分钟前
    不合理,网络根本不需要 1s 。网络远比你想象得快的多。大家会说数据库查询慢,但没人会说网络慢,另外,1s 的数据库查询其实也可以归入到慢查询中了。
    Donahue
        4
    Donahue  
       20 小时 21 分钟前   ❤️ 1
    各有各的优势,你不会想用 C 开发神经网络的(防杠,是开发不是部署),同样你也不太可能用 python 开发商用级别的单片机程序(防杠,不太可能表示还是有少量可能性的)。各自在不同场景下发挥作用。
    superrichman
        5
    superrichman  
       20 小时 18 分钟前   ❤️ 8
    如果是极端追求性能、计算密集(比如游戏引擎、图像处理、金融高频交易),C 更合适。

    如果是业务逻辑复杂、I/O 密集(比如 Web 服务、数据处理、原型验证),Python 完全够用,还能更快交付。

    最佳实践是 混合使用:用 Python 写业务逻辑,用 C/C++/Rust 做性能关键模块。
    emSaVya
        6
    emSaVya  
       20 小时 16 分钟前
    “但由于网络更慢,需要等待 1 秒” 你们的用户太棒了。

    我们 p999 超过 20ms 老板就要求优化服务了。
    zhangrandl
        7
    zhangrandl  
       20 小时 14 分钟前
    现在咱们遇到的场景,大概率到不了拼机器性能的地步,啥语言其实差别都不大,重要的是业务逻辑能跑通。真到了拼语言性能的地步的话,自然就有办法解决了,Java 性能也不如 C ,还不是一样能扛住电商并发。我是写 Python 的,经常有人给我说 Java 性能多好,我说就你们现在碰到的场景,有那研究语言性能的功夫,多申请俩服务器比啥都强
    cmos
        8
    cmos  
       20 小时 10 分钟前
    假的,因为 tcping 到百度,只需要 50ms 。

    另外,先明确目的,然后再使用恰当的语言,他本末倒置、扭曲工具属性了。

    vfs
        9
    vfs  
       20 小时 10 分钟前
    他所说的网络是 socket 层的等待时间,但是显示中往往还会有 tls ,http 等上层协议。 如果说 python 够快,那么应该使用 python 编写 ssl 实现,可以试试有多快
    NessajCN
        10
    NessajCN  
       20 小时 9 分钟前
    先不说举个这么特例的情况来代表这两种语言的一般情况这种典型逻辑错误
    就光说这个例子本身,我 C 比你 Python 快 100 倍,那不就说明我 C 能在同样返回时间里比你 Python 多处理 100 倍的任务吗。
    你管这叫一样?
    7beloved
        11
    7beloved  
       20 小时 2 分钟前
    @emSaVya 200 吧
    spritecn
        12
    spritecn  
       19 小时 59 分钟前
    现在除了 ai 训练场景,cpu 都是过剩的,没啥子大的意义
    Hoo1379
        13
    Hoo1379  
       19 小时 54 分钟前
    @superrichman 同意,现在手头同时有 c 和 py 的项目,py 重构到 c 成本太高,只能对关键逻辑重写 c 。要是业务逻辑变动稍微频繁点,单纯一个语言修改起来极其难受。但是这样对开发和架构的要求就高了。
    ejin
        14
    ejin  
       19 小时 51 分钟前   ❤️ 1
    真的强调性能你上专用处理芯片啊。
    用啥通用 CPU ,用啥通用编程语言嘛。

    资源全踏马浪费了!电费里大部分都是浪费的资源!!!

    专用芯片的处理能力远超通用芯片,差别相当于自行车和宇宙飞船的区别。
    mightybruce
        15
    mightybruce  
       19 小时 47 分钟前
    python 和 从来就不是对立的, 快速迭代开发 + 关键代码和库重构就是 核心,
    往往是核心模型比如计算以及网络底层处理用 c/c++/rust 写,python 做业务层调用封装好的共享链接库。

    比如 Opencv, libuv 的库的封装, 可以说 python 能达到几乎 c 的 70%水平,比 java jni 调用 opencv 都快多了,

    libuv 的 库 导出为 python 接口有一个叫做 Pyuv

    ffmpeg 的众多库如 libavcodec, libavformat, libavutil, libswscale 的接口导出叫做 PyAV.
    ejin
        16
    ejin  
       19 小时 43 分钟前   ❤️ 1
    货比货得扔,人比人得死啊。
    针对你的需求,理性选择就好。
    如果合适,你就选。

    不要做无意义的对比,有时候看似更低的成本,其实附加成本更高。


    你的对比方法,其实就相当每个女生的想法:
    到底是嫁给亿级富翁,还是百万级富翁。

    但前提是,你的情况是什么样的,有没有得选。


    现在 amd intel 的 cpu ,制程先进程度根本就不是最新的,精度并不是最高的,至少落后最高精度的 2-3 个档次,你猜为什么?难道是他们不想吗?他们甚至不用管生产,只需要设计就足够,为什么他们不采用高技术的精度呢?这到底是为什么呢?
    Dropless
        17
    Dropless  
       19 小时 43 分钟前
    你关注的点是吞吐量,处理速度会影响吞吐量,但不是唯一决定因素。
    raycool
        18
    raycool  
       19 小时 41 分钟前
    python 和 c 肯定不一样啊,有不同的应用场景,纠结这个没意义。
    mightybruce
        19
    mightybruce  
       19 小时 39 分钟前
    由于 Python 和 C++ 相互调用操作太好了, 所以不少 c++库 都可以调用 python, 而 python 也可以调用导出的 ffi 接口
    libboost-python 就是 Boost.Python 能够完成 python 和 c++ 相互调用.
    EdmondGUO
        20
    EdmondGUO  
       19 小时 19 分钟前
    @emSaVya 哥们的用户都是电竞小子吗 20ms 就受不了了
    thinkershare
        21
    thinkershare  
       19 小时 15 分钟前
    大家觉得 python 不慢是因为那些 python 很慢的东西,大家选择了用 c/c++实现,然后用 python 做 wrapper. python 所有普遍对性能有要求的包,无不是如此实现的。
    NoobPhper
        22
    NoobPhper  
       19 小时 10 分钟前
    java 之父马士兵。python 之父廖雪峰
    wakarimasen
        23
    wakarimasen  
       18 小时 54 分钟前
    有的时候劳动力成本比服务器成本要高,比如加台机器一年要花几万,但是几万元你未必能雇佣到能省下这台机器的工程师。
    darkengine
        24
    darkengine  
       18 小时 42 分钟前   ❤️ 1
    一个 cpu 花费 20hz ,一个花费 2000hz

    。。。怎么还有花费赫兹的说法。。。。


    说句得罪人的话,80%的项目都等不到它的 1000 个用户。
    paopjian
        25
    paopjian  
       18 小时 41 分钟前
    网页交互的实时性需求并不是那么高吧, 技术栈选 python 还是为了快速上马 快速迭代开发, 而且 python 也能调用底层库优化速度, 感觉没有那么不堪, 循环什么的慢倒是真的慢. 不然也不会有 numba 什么事了, GIL 虽然是个不好用的东西,但是省心智了
    zpxshl
        26
    zpxshl  
       17 小时 46 分钟前 via Android
    @javalaw2010 我们线上统计,客户端发网络请求到收到回复。90 分位要 1 秒以上的。
    penzi
        27
    penzi  
       17 小时 38 分钟前
    如果讨论 service ,python 垃圾并不是垃圾在计算性能
    xgdgsc
        28
    xgdgsc  
       17 小时 29 分钟前 via Android
    用 Julia 就行了
    minami
        29
    minami  
       17 小时 9 分钟前
    考虑到 Python 在 90%以上的情况下都是指 CPython ,那 Python 就是 C ,你嫌慢写 C 函数呗,这就是个胶水语言
    skye
        30
    skye  
       17 小时 2 分钟前
    当用单个用户请求 case 来评估服务器容量的时候,对不对已经不太重要了,开心就好
    xwander
        31
    xwander  
       16 小时 51 分钟前
    纸上得来终觉浅,直接看别人的源码你会提升更快。
    就算是 C 语言已经很快,Linux 内核代码里,容易造成性能瓶颈的地方往往是直接用汇编。一个成熟的项目往往都是混合语言的,Python 调库,C 语言实现库,并存优于单一语言实现。
    HiHuan
        32
    HiHuan  
       16 小时 41 分钟前   ❤️ 3
    @emSaVya 20ms 就受不了了?这么能吹牛逼我还以为这里是逼乎呢
    xizh007
        33
    xizh007  
       16 小时 41 分钟前
    看你要不要 "先把东西做出来"
    iyaozhen
        34
    iyaozhen  
       16 小时 35 分钟前
    其实很多项目,一天平均 qps 还没开发人员多

    不过话说回来,如果单纯 python web ,确实垃圾,谁用过谁知道
    CaptainD
        35
    CaptainD  
       16 小时 31 分钟前
    火车和皮卡。。。
    wangtian2020
        36
    wangtian2020  
       16 小时 24 分钟前
    错误的,python 和 nodejs 一样,我公司 95%的业务都用 python 写,但是最近一个新项目我用 nodejs 写后端了
    Immunize
        37
    Immunize  
       16 小时 16 分钟前
    错误的,网络延迟你可以靠并发去掩盖,比如单个用户 0.1s (处理时间) + 0.9s (传输时间) 的场景,大可以在等待 IO 的时候去服务其他用户,毕竟网络 Socket 本身是交给内核去处理。但是如果处理时间要 1s ,那真的就只能处理 1/10 的用户了。
    felixcode
        38
    felixcode  
       16 小时 15 分钟前
    理论上很多模块可以用 FPGA 实现,用 Verilog 编写,只是开发量大了一点点点而已,但速度又是几十倍的提升啊
    skallz
        39
    skallz  
       16 小时 10 分钟前
    现在绝大部分 web 项目都不太需要考虑服务器性能问题,用户量和数据量根本上不去。。。等到真需要性能的时候,加机器比加人换语言写性能更好的代码更有性价比,等到加机器搞不定的时候再换语言重构部分服务就行(除非项目一开始就定位为用户量大了),就算淘宝也是从 php 到 java 这样的历程走过来的
    zepc007
        40
    zepc007  
       16 小时 7 分钟前   ❤️ 2
    一个是你舒服,另外一个是机器舒服,你选择哪个舒服?
    xuanbg
        41
    xuanbg  
       16 小时 3 分钟前
    我写的服务,接口响应速度一般都在 10ms 以下。1 秒的响应速度是不可能被接受的
    dule
        42
    dule  
       15 小时 48 分钟前
    所以写个代码我还要考虑机器会不会跑的太累?我只知道我用 python 舒服,前期先快速抢占市场,项目活了有稳定盈利,才有资格谈论优化
    Instagram 日活 2.5 亿、Reddit 都是 python ,请问咱是什么公司就考虑性能了,跟用什么语言写有个毛关系?
    prosgtsr
        43
    prosgtsr  
       15 小时 47 分钟前 via iPhone
    现在有一种语言可以让你的接口响应时间减半,但是你的每日工作时间由 8 小时变为 12 小时,工资待遇不变,你换不换吧就说
    iorilu
        44
    iorilu  
       15 小时 41 分钟前
    @darkengine 1000 可以换成 100
    gam2046
        45
    gam2046  
       15 小时 16 分钟前
    这个逻辑就像兰博基尼和我自行车的速度是一样的,反正大家都要等红绿灯。
    red13
        46
    red13  
       14 小时 56 分钟前
    “C 程序的运行时间需要 0.001 秒,而 Python 程序的运行时间需要 0.1 秒,慢了 100 倍,但由于网络更慢,需要等待 1 秒,你想,用户能感觉到 1.001 秒和 1.1 秒的区别吗?”

    这句话完全没有 Python 和 C 是一样的 这个意思
    codersdp1
        47
    codersdp1  
       14 小时 25 分钟前
    在 IO 密集型应用中听起来没毛病,CPU 密集型应用就不得行了。
    chenqh
        48
    chenqh  
       14 小时 14 分钟前
    PHP 都能用来做 web,python 为什么不可以呢?
    QiShine
        49
    QiShine  
       13 小时 53 分钟前
    引力波发现的数据分析也是 python 搞的
    opengps
        50
    opengps  
       13 小时 51 分钟前
    你真要考虑这问题的话,不要放到服务器上考虑,而是放到那种超低端的单片机上去考虑,这时候才是需要考虑这个问题的时候
    对于服务器来说,早就脱离单体程序了,比较轻松的可以选择升级配置更换硬件甚至直接分布式集群解决瓶颈。
    bruce0
        51
    bruce0  
       13 小时 13 分钟前
    @HiHuan 这个可能真不是吹牛皮,我们原来打算用云的 redis,但是云的 redis 的网络延迟在 100 微秒左右(没看错,就是在 100 微秒 0.1ms),联系了他们的 redis,网络工程师等等一起研究,网络工程师说因为涉及到多跳,最少 100 微秒左右.我们使用 redis 在单线程中,没有多线程并发(祖传的,就是这样用,要改相当于整个游戏存储重写),这样会把 QPS 限制在不到 1w,我记得在 7000 左右. 因为一个玩家登录,会涉及到到次 redis 读写,所以只要在线人数超过 1000 人,这个服就开卡了.没法办,我们只能用自建的 redis,使用 127 直连
    xiaomushen
        52
    xiaomushen  
       12 小时 54 分钟前   ❤️ 1
    @bruce0 游戏服务端应用还是尽量单体。另外,你直接用内存不香么?干嘛要用 redis ?我们是直接移植 redis 代码,静态编译在应用里的(因为要用那些数据结构,反复了很久,决定直接用 redis 代码)
    clarkethan
        53
    clarkethan  
       12 小时 25 分钟前
    首先是人,其次是场景,最后才是语言

    最近刚被合作伙伴的 python 小子坑了一把,第三方把金额、汇率之类的数据以字符串的形式给他,他转成浮点数,内部很多逻辑处理完,然后再把一堆数据转成字符串给我,于是,那天我听着窗外台风桦加沙的呼呼声,远程教他为什么有些数据会有一点点对不上

    其实人是真正决定最终跑得好不好的最大因素,python 队伍里面半吊子太多
    nyxsonsleep
        54
    nyxsonsleep  
       12 小时 7 分钟前
    python 胶水层可以慢慢优化,问题不大。只要业务在云上就行。
    zhhcnn
        55
    zhhcnn  
       11 小时 8 分钟前
    如果是一个 1 秒执行一次的操作,你为什么要在乎他执行需要 1ms 还是 1s ,对你来说有区别吗,等需要 1 秒执行 1000 次再考虑性能
    Dispatcher
        56
    Dispatcher  
       9 小时 24 分钟前
    实际上 python 和 c 对比不合理,因为一个是编译,一个是解释执行。二者没有对比性,就像同样是飞机,一个是螺旋桨,一个是涡喷。

    如果说都是解释执行,c 和 lua 更近一些。用 lua 和 python 对比可能更好一些;但是很可惜,lua 完胜,python 完败。

    这并不是说 python 一无是处,衡量一个语言的生命力,我觉得要看:
    1 、生态; 2 、场景; 3 、未来。

    当下的 python 的生态是当之无愧的第一,我觉得这个结论应该是无人质疑的吧; python 在可预见的未来,也不太会象是 perl 、ruby 一样陨落;
    唯一的争议是 python 的性能方面的劣势;不过对于非密集计算场景,其实大多数时候足够用了;
    prosgtsr
        57
    prosgtsr  
       7 小时 59 分钟前
    @bruce0 你这个场景应该放内存,访问可以从微秒级变成纳秒级
    cufezhusy
        58
    cufezhusy  
       7 小时 28 分钟前
    金融行业 Python 肉眼可见的越来越流行。开发速度快实在是太重要了
    nightwitch
        59
    nightwitch  
       6 小时 9 分钟前
    计算密集型和 IO 密集型的场景都分不开的话不用考虑这个问题
    关于   ·   帮助文档   ·   自助推广系统   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1008 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 22:50 · PVG 06:50 · LAX 15:50 · JFK 18:50
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.