c++ - 突然从 cython 中反复调用 c++ 方法要慢得多

标签 c++ cython

我经常使用 cython 包装 C++ 类。所有的计算都是在c++中完成的,cython仅用于将变量传递给构造函数并从c++中获取结果。

对于最近的一个项目,我遇到了以下问题:代码(初始化一个类然后调用一个方法)最初总是运行良好,但是在重复调用相同的方法之后(我无法准确重现),当调用相同的方法时,它突然比正常运行速度慢至少 1000 倍。

我的问题是:什么会导致这种看似随机的行为,您将如何调试它?

我知道如果不看代码就无法解决这个问题,但它很大而且我不知道有问题的行为从何而来。我只是询问如何解决它的提示和策略。

我尝试过的事情:

  • 检查了 C++ 代码是否存在泄漏。
  • 尝试了不同的编译器指令(#cython: wraparound=False, boundscheck=False, ...)

提示可能是,如果我在没有 ipython 的 --pylab 选项的情况下运行 python 代码,它会提示找不到符号,但这是我能够识别的唯一问题。

最佳答案

是一个未初始化的成员偶尔会引起问题,而不是内存泄漏。感谢那些试图提供帮助的人!

ipython 的问题仍然存在,但我已将其发布在 another 中问题。

关于c++ - 突然从 cython 中反复调用 c++ 方法要慢得多,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26342859/

相关文章:

c++ - 这是 boost::iterator_facade 的 boost::range_detail::demote_iterator_traversal_tag 中的错误吗?

python - 使用 python 解释器直接运行 cython 扩展?即 "python test.so"

C++ 多线程和 vector

c++ - 将像素数组保存到 jpeg 图像文件 C++

cython - 如何在 Cython 中扩展宏

python - 高效转换 Pandas DataFrame

python - Cython 中的 abs(双复合体)

cython - 如何分析由另一个 python 脚本调用的 cython 代码?

c++ - 列表插入 "Cannot convert argument from Class<T>* to Class<T> &&"

c++ - 将范围添加到函数调用