Python 真的和 c 一样么

5 天前
 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

7962 次点击
所在节点    程序员
75 条回复
bruce0
4 天前
@prosgtsr #57
@xiaomushen #52

游戏中的全局数据,还有在线玩家的数据都在内存中,这些肯定不是读 redis 的,但是数据要落地啊,要不然游戏重启,崩了,机器故障了,数据不全没了,我们直接拿 redis 开 AOF 当落地数据用,不是所有数据都存在 redis 里,很多数据还是在内存里的
encro
4 天前
首先 python 性能很差吗?
性能最差的 django 现在采用异步,如果你 sql 写的没问题,一个普通接口也就 20ms 能返回前端了。
一台普通虚拟机支持几百几千 qps 毫无问题。
fredweili
4 天前
关心这个,还不如想想写 AI 到底怎么搞,只有 python 类库全啊
mightybruce
4 天前
@bruce0 你这种情况,
第一看你游戏中的是什么数据, 如果是虚拟资产,那么的确要存数据库。
其次正在进行的游戏数据当然放在内存中,通过各种缓存库操作,
不需要实时读取的数据, 放 kvrocks 中,kvrocks 整合 redis 和 rocksdb 用来写数据
bruce0
4 天前
@mightybruce #64 游戏中所有数据(就是玩家的虚拟资产,绝对不能丢的),用过 kvrocks 类似的 pikiwidb,相比 redis 延迟稍高点,鬼区没问题,活跃区,可能会出现部分场景下卡顿
cnbatch
4 天前
一样?不用太在乎他的执行速度?猜猜为什么 shadowsocks 有了原始 Python 版本后有人用 C 改写(最后用 Rust 改写)
lanisle
4 天前
这话题不值得大家花时间讨论吧……你们时间不值钱吗?
xiaomushen
4 天前
@bruce0 对啊,要落地。所以我们直接移植了 redis 的部分代码,静态编译进了服务端应用里
少了网络层面通讯损耗,多香!
bruce0
3 天前
@xiaomushen #68 懂了,但是我们开发用的 go,交叉编译还是有点啰嗦,中间有想过直接内嵌 leveldb 的(有人把 leveldb 包装成 go 的接口了) 但是这样做基本还是要重写存储层,不如直接 127 连 redis 方便
msg7086
3 天前
公司都要降本了,还要花大钱请 C 程序员花大量时间写 C 代码?不是直接找几个大学生开着 AI 糊出来个脚本就完事了吗。
xiaomushen
1 天前
@bruce0 重写存储层工作量是大,但长痛不如短痛,个人认为,这样的研发投资,是值得去做的
chunhuitrue
1 天前
外行才拿 python 和 c 比运行速度。
yanqiyu
1 天前
但是服务器要同时处理服务 1000 个并发请求,这些人的 1s 的网络等待可以(几乎)无代价的重叠,只剩下一秒多等待,但是 CPU 开销可是实打实加起来算的,代码更快就可以省下买 CPU 的钱。

或者说网络的等待决定的事延迟,你程序耗的 CPU 时间决定了吞吐。
xljya
13 小时 56 分钟前
@NoobPhper 这两个都是贬义吗
jackOff
12 小时 17 分钟前
python 可以快速验证业务可行性和方便科学计算以及 ai 训练,c 属于极致的性能优化和工艺技术,培养一个具有商业价值的 c 程序员很困难,但是培养好了做嵌入式开发也好做游戏开发也好都是挺吃香的,只是现在的市场到底有没有耐心去培养 c 程序员? python 的胶水特性 cython 也使得复杂的 c 编程变成了简单的 c 包调用,尤其是最新多线程放开的尝试下,其性能也逐步提升,目前也有在手机上原生携带 linux 系统的趋势,如果这个趋势加上手机配置的增强,作为快速变现产品来说,python 的产品验证周期比 C 要快很多

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

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

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

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

© 2021 V2EX