检查了一下之后发现程序运行一次大概 500 秒,其中大约有 170 秒都花在一个模拟用的计算函数里了,暂且称其为函数 A 吧
函数 A 大概做了两件事,首先调用了几次函数 B ,去几个表里查表并线性插值,这个过程大概花了 40 秒,这个 40 秒也是优化过的结果了,它原本的算法能干到 500 秒去了。然后就是对大概 30 个参数进行了一系列运算,我大概统计了一下有哪些运算,列表在下面了
[td]算符[/td]
[td]次数[/td]
×
30
÷
5
+
15
-
10
√
1
顺便说一下,这个函数传值是用的 np.array ,而且这个函数运行一次其实挺快的,但是被调用的次数实在是多的离谱,所以花的时间就很长了
总之我尝试使用 CPython 重写了一下函数 A 和函数 B ,算法完全没变,想着再怎么样也能把时间减半吧,结果离谱的事情发生了,写完之后-m cProfile 了一下,结果函数耗时 4.8S ,这是不是有点夸张了,c 真能比 python 快这么多?我都开始怀疑我对 cProfile 的使用是不是有什么问题了。

