C++和Python之间切换控制的价格

Pau*_*nta 9 c++ python performance

我正在开发一个使用Python扩展/编写脚本的C++应用程序.当然,C++通常比Python快得多,但这是否意味着您应该尽可能多地使用Python代码执行C++代码?

我问这个是因为我不确定,在用C++编写的代码和用Python编写的代码之间切换控制是否有任何性能成本?我是否应该在任何场合使用用C++编写的代码,或者我应该避免回调C++来完成简单的任务,因为执行C++代码可能带来的任何速度增益都超出了语言之间切换的成本?

编辑:我应该说清楚,我不是要求它实际解决问题.我纯粹是出于好奇而问,这是值得记住的未来.所以我对替代解决方案不感兴趣,我只想从技术角度了解答案.:)

Ada*_*ner 8

我不知道有一个具体的规则,但许多人遵循的一般规则是:

  • python中的原型.这写得更快,可能更容易阅读/推理.
  • 一旦你有了原型,你现在可以识别应该用c ++编写的慢速部分(通过分析).
  • 根据代码的域,慢位通常与"内循环"类型的代码隔离,因此python与此代码之间的切换次数应该相对较小.
  • 如果您的程序足够快,那么您已经成功地通过在c ++中编写过多来避免过早地优化代码.

  • 这个问题没有提到使用嵌入式解释器的C++主机与调用C++库的Python解释器的选择:你选择跳过它;-P.该问题提供了前一种情况,并询问有关两者之间呼叫的性能影响的信息.我没有看到你的答案中有多少相关内容...... (2认同)

Dan*_*Dan 1

成本是存在的,但可以忽略不计。这是因为您可能做了相当多的工作将 python 的高级数据类型转换为 C++ 兼容的表示形式。当然,这与从一个 C++ 函数调用另一个函数的成本类似,存在一些开销。何时从 Python 切换到 C++ 是个好主意的规则是:

具有很少参数的函数

对少量数据进行大量处理的函数

尽可能少调用的函数 - 如果可能的话合并函数调用

  • 按顺序: 1. 参数的数量与什么有关系?2. 对“大量”数据进行大量处理怎么样?C++做不到吗?3:如果它很少被调用,那么你到底为什么要花费巨大的精力将它转换为 C++?看来您应该专注于那些实际占用处理时间的内容。 (2认同)