【发布时间】:2013-09-22 22:13:24
【问题描述】:
在直接用 C 语言编写函数以用作 python 模块时,是否有任何数据可以直观地显示使用 Python C API 可以获得多少性能?
除了“C 更快”这一显而易见的事实;有没有比较 Python C API 和 C 的数据?
【问题讨论】:
标签: python c python-c-api
在直接用 C 语言编写函数以用作 python 模块时,是否有任何数据可以直观地显示使用 Python C API 可以获得多少性能?
除了“C 更快”这一显而易见的事实;有没有比较 Python C API 和 C 的数据?
【问题讨论】:
标签: python c python-c-api
我不确定是否有任何简单的方法可以获取此类“数据”。这实际上取决于您在做什么,并且您必须考虑到将数据从 Python 端传输到 C 端并再次返回将是系统的额外负载,与直接在 Python 中执行操作相比。
如果您正在进行大量计算,并且这些计算很复杂但无法在现有库中完成(例如“numpy”),那么它可能值得做。当然,计算不一定非得是“数学”,它可以是对大数组中的数据进行洗牌,或者进行if (x > y) z++; 类型的操作。但是在将数据从“python”转换为“C”类型的数据并再转换回来之前,您确实需要做大量的工作。
这有点像问“这辆运动型汽车比那辆不太运动型汽车快多少”,如果您在一个交通拥堵的大城市开车,差别可能根本就没有 - 但如果你把他们带到赛道上,运动型汽车可以适当地伸展它的腿,赢家是很明显的。
在“汽车”主题中,“拥塞”是对 C 中一个非常小的函数的大量调用,这并没有做太多工作——“从 Python 转换为 C 并返回到 Python 数据”将是拥堵/红绿灯。如果你有大量的数据,那么你会得到更多的“赛道”效果。
【讨论】: