将 sympy 与 pypy 一起使用时没有加速

No speedup when using sympy with pypy

对于我的代码,我需要快速求解许多 Pell 方程。仅使用 sympy 1.0 和 python 3.5,在大约 60 equations/sec 时调用 diop_DN(q, 1) 运行s。我查看了 source code for diop_DN 求解器,它似乎是用纯 python 编写的。所以我尝试 运行 将我的代码与 pypy 5.1.2 (python 2.7.10) 和 sympy 1.0 结合使用,但令我惊讶的是它 运行 慢了大约两倍。

这是预期的行为吗? pypy 不应该能够 运行 纯 python 更快吗?

您可能没有给 PyPy 足够的预热时间。如果我 运行 diop_DN(13, -4) 在一个循环中,需要超过 50 次迭代才能收支平衡,但渐近时间比 CPython 快 5 倍左右。如果像在实际代码中一样,您没有使用相同的参数进行所有调用,则可能需要更长的时间来预热。 (使用 PyPy 5.6 测量的时间;对于较旧的 PyPy 5.1,warm-up 也可能会更长一些。)