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

Python 真的和 c 一样么

  •  
  •   minchieh · 9 小时 12 分钟前 · 3736 次点击

    廖雪峰 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

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

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

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

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

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

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

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

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

    专用芯片的处理能力远超通用芯片,差别相当于自行车和宇宙飞船的区别。
    mightybruce
        15
    mightybruce  
       8 小时 29 分钟前
    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  
       8 小时 25 分钟前   ❤️ 1
    货比货得扔,人比人得死啊。
    针对你的需求,理性选择就好。
    如果合适,你就选。

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


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

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


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

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


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

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

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

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

    其实人是真正决定最终跑得好不好的最大因素,python 队伍里面半吊子太多
    nyxsonsleep
        54
    nyxsonsleep  
       49 分钟前
    python 胶水层可以慢慢优化,问题不大。只要业务在云上就行。
    关于   ·   帮助文档   ·   自助推广系统   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2862 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 89ms · UTC 11:32 · PVG 19:32 · LAX 04:32 · JFK 07:32
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.