3

我正在使用 Cython 迈出第一步,我想知道如何进一步提高性能。到目前为止,我的执行时间只有通常(仅限 python)的一半,但我认为肯定还有更多!

我知道cython -a并且我已经输入了我的变量。但是我的函数中仍然有很多黄色。这是因为 cython 无法识别 numpy 还是我还缺少其他东西?

4

2 回答 2

2

我相信您可以通过使用 libc 中的数学函数受益,因为您在标量上调用 np.sqrt 和 np.floor。这不仅有 Python 调用开销,而且在 numpy ufunc 中有不同的代码路径用于标量和数组。所以这至少涉及一个类型切换。

于 2013-04-09T14:55:40.513 回答
0

我认为这不是问题,因为我已经使用官方教程进行了测试,它在每条 np.* 行上也报告为黄色,并且与您的代码一样涉及 python。

该页面末尾的第 3 点应该解释了这一点:

调用 NumPy/SciPy 函数目前有 Python 调用开销;可以通过从 Cython 直接到 C 的捷径。(但这确实需要对这些库进行一些孤立和增量的更改;请邮寄 Cython 邮件列表以获取详细信息)。

于 2013-04-03T02:30:01.030 回答