传递Python元组代替C ++ struct function参数是否有任何性能影响?

时间:2014-10-15 17:52:42

标签: python c++ performance struct tuples

我想利用Python中的几个C ++库来提供用于编写​​C ++应用程序脚本的Python API。所以我想知道将Python元组代替C ++结构传递给C ++函数是否有任何性能影响?另外,两个数据结构是否相同?如果两者相同,我如何防止传递具有不兼容成员类型的元组?这会影响性能吗?如果这会影响性能,那么在Python中处理这种情况的最佳实践是什么。请注意,我显然不是图书馆的作者。

1 个答案:

答案 0 :(得分:2)

Python元组与Python之间几乎没有任何关系 C ++中的struct。元组的元素既没有命名 也不打字,必须通过函数访问(在C ++中) Python C API(PyTuple_GetItem等)。内部 (虽然你没有直接访问它),一个元组是一个 指向对象的指针数组。即使是像int和类似的类型 float

由于函数调用和添加的级别 间接,使用Python元组比使用慢 一个struct。 “最佳实践”是编写包装函数, 它从元组中提取信息,做动态 类型检查等,并用它来初始化struct 然后发送C ++函数。真的没有别的 方式。