Python 真的和 c 一样么

2 天前
 minchieh

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

6692 次点击
所在节点    程序员
69 条回复
realpg
2 天前
这种问题你都要问, 说明你的知识储备量和公司职位不需要考虑这些问题
什么写的快用什么就行了

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

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

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

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

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

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

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

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

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

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

ffmpeg 的众多库如 libavcodec, libavformat, libavutil, libswscale 的接口导出叫做 PyAV.
ejin
2 天前
货比货得扔,人比人得死啊。
针对你的需求,理性选择就好。
如果合适,你就选。

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


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

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


现在 amd intel 的 cpu ,制程先进程度根本就不是最新的,精度并不是最高的,至少落后最高精度的 2-3 个档次,你猜为什么?难道是他们不想吗?他们甚至不用管生产,只需要设计就足够,为什么他们不采用高技术的精度呢?这到底是为什么呢?
Dropless
2 天前
你关注的点是吞吐量,处理速度会影响吞吐量,但不是唯一决定因素。
raycool
2 天前
python 和 c 肯定不一样啊,有不同的应用场景,纠结这个没意义。
mightybruce
2 天前
由于 Python 和 C++ 相互调用操作太好了, 所以不少 c++库 都可以调用 python, 而 python 也可以调用导出的 ffi 接口
libboost-python 就是 Boost.Python 能够完成 python 和 c++ 相互调用.
EdmondGUO
2 天前
@emSaVya 哥们的用户都是电竞小子吗 20ms 就受不了了

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

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

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

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

© 2021 V2EX