我正在开发一个用Python扩展/脚本化的C++应用程序。当然,C++比Python更快,但这是否意味着你应该尽可能频繁地在Python代码上执行C++代码?在
我问这个是因为我不确定,在C++编写的代码和用Python编写的代码之间是否有切换控制的性能开销?我是否应该在每个场合使用C++编写代码,或者我应该避免调用C++来执行简单的任务,因为从执行C++代码中获得的任何速度增益都与语言间切换的成本相匹配?在
编辑:我应该说清楚,我要求这样做并不是为了解决问题。我问这个问题纯粹是出于好奇,这是一件值得铭记的事,为将来着想。所以我对其他解决方案不感兴趣,我只想从技术角度知道答案。:)
成本是存在的,但可以忽略不计。这是因为你可能会做一个公平的工作,将Python的高级数据类型转换为C++兼容的表示。当然,这类似于调用一个C++函数从另一个函数调用的开销,但存在一些开销。当从Python切换到C++时,最好的规则是:
无参数函数
对少量数据进行大量处理的一种函数
一种尽可能少被调用的函数-如果可能的话,合并函数调用
保持简单,并根据需要调整性能。在C++应用程序中嵌入解释器的主要原因是允许运行时配置/数据指定一些处理,也就是说,可以修改脚本而不必重新编译C++程序——这是您何时调用解释器的指南。在某些解释器调用中,调用C++的主要原因是:
- 访问或更新一些不能作为参数公开给调用的数据(或通过解释器支持的其他注册过程)
- 在处理的某些关键部分获得更好的性能
对于后者,首先尝试脚本(假设它在那里很容易开发),那么如果它很慢,那么就可以识别C++代码在哪里以及如何帮助。当/如果在哪里,性能确实是一个问题——作为一般准则,当从C++调用到解释器或反之亦然:尝试尽可能多地排列工作,然后调用到另一个系统。如果遇到问题,请返回stackoverflow,并提供具体问题和实际代码。在我不知道这有什么具体的规则,但很多人遵循的一个普遍规则是:
相关问题 更多 >
编程相关推荐