GoForum › 🌐 V2EX
c 真能比 Python 快这么多?
Hhehepei ·
2026-06-13 00:38 ·
0 次点赞 · 14 条回复
事情是这样的,最近几天在接手别人的一个 python 写的仿真程序,这个程序的运行速度奇慢无比,于是 -m cProfile 看了一眼
检查了一下之后发现程序运行一次大概 500 秒,其中大约有 170 秒都花在一个模拟用的计算函数里了,暂且称其为函数 A 吧
函数 A 大概做了两件事,首先调用了几次函数 B ,去几个表里查表并线性插值,这个过程大概花了 40 秒,这个 40 秒也是优化过的结果了,它原本的算法能干到 500 秒去了。然后就是对大概 30 个参数进行了一系列运算,我大概统计了一下有哪些运算,列表在下面了
| 算符 | 次数 |
|---|---|
| × | 30 |
| ÷ | 5 |
| + | 15 |
| - | 10 |
| √ | 1 |
顺便说一下,这个函数传值是用的 np.array ,而且这个函数运行一次其实挺快的,但是被调用的次数实在是多的离谱,所以花的时间就很长了
总之我尝试使用 CPython 重写了一下函数 A 和函数 B ,算法完全没变,想着再怎么样也能把时间减半吧,结果离谱的事情发生了,写完之后-m cProfile 了一下,结果函数耗时 4.8S ,这是不是有点夸张了,c 真能比 python 快这么多?我都开始怀疑我对 cProfile 的使用是不是有什么问题了。
14 条回复
drymonfidelia · 2026-06-13 04:23
@laminux29 c#的 jit 很强 部分场景甚至能反超 c
“首先调用了几次函数 B”,几次应该不能算“被调用的次数实在是多的离谱”吧?
另外,“这个函数传值是用的 np.array”,只有传值使用 numpy ?内部是什么情况呢?
@laminux29 #5 /APP ?
添加回复
你还需要 登录
后发表回复
py 是这样的,我对他的印象就是读起来爽写起来爽,但是执行的速度和占用的内存一言难尽