是否有任何数据可以直观地显示当直接用 C 编写函数用作 python 模块时,使用 Python C API 可以获得多少性能?
除了“C 更快”这一显而易见的事实之外;有没有比较Python C API 和C 的数据?
最佳答案
我不确定是否有任何简单的方法来获取此类“数据”。这实际上取决于你在做什么,并且你必须考虑到,与直接在 Python 中执行操作相比,将数据从 Python 端传输到 C 端并再次返回会给系统带来额外的负载。
如果您正在进行大量计算,并且这些计算很复杂但无法在现有库(例如“numpy”)中完成,那么它可能值得做。当然,计算不一定是“数学”,它可以是在一个大数组中打乱数据,或者进行 if (x > y) z++;
类型的操作。但是,在将数据从“python”类型数据转换为“C”类型数据并再转换回来之前,您确实需要做大量的事情。
这有点像问“这辆运动型汽车比那辆不那么运动型的汽车快多少”,如果您在拥堵严重的大城市开车,差别可能根本就没有 - 但如果你把它们带到赛道上,让跑车适本地拉伸(stretch)它的腿,胜利者就很明显了。
在“汽车”主题中,“拥塞”是对 C 中一个非常小的函数的大量调用,该函数没有做太多工作 - “从 Python 转换为 C 并返回 Python 数据”将是拥堵/红绿灯。如果你有大量数据,那么你会得到更多的“赛道”效果。
关于Python C API 性能提升?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18949298/