【问题标题】:Python C API performance gains? [closed]Python C API 性能提升? [关闭]
【发布时间】:2013-09-22 22:13:24
【问题描述】:

在直接用 C 语言编写函数以用作 python 模块时,是否有任何数据可以直观地显示使用 Python C API 可以获得多少性能?

除了“C 更快”这一显而易见的事实;有没有比较 Python C API 和 C 的数据?

【问题讨论】:

    标签: python c python-c-api


    【解决方案1】:

    我不确定是否有任何简单的方法可以获取此类“数据”。这实际上取决于您在做什么,并且您必须考虑到将数据从 Python 端传输到 C 端并再次返回将是系统的额外负载,与直接在 Python 中执行操作相比。

    如果您正在进行大量计算,并且这些计算很复杂但无法在现有库中完成(例如“numpy”),那么它可能值得做。当然,计算不一定非得是“数学”,它可以是对大数组中的数据进行洗牌,或者进行if (x > y) z++; 类型的操作。但是在将数据从“python”转换为“C”类型的数据并再转换回来之前,您确实需要做大量的工作。

    这有点像问“这辆运动型汽车比那辆不太运动型汽车快多少”,如果您在一个交通拥堵的大城市开车,差别可能根本就没有 - 但如果你把他们带到赛道上,运动型汽车可以适当地伸展它的腿,赢家是很明显的。

    在“汽车”主题中,“拥塞”是对 C 中一个非常小的函数的大量调用,这并没有做太多工作——“从 Python 转换为 C 并返回到 Python 数据”将是拥堵/红绿灯。如果你有大量的数据,那么你会得到更多的“赛道”效果。

    【讨论】:

    • 我怀疑您的基准测试不是很公平。您是否将数字从 python 复制到 C,或者只是在 C 或 Python 中循环大量次将数字除以 2 或 3?
    • @josten:这确实是相当不公平的比较。就像我说的那样,这在很大程度上取决于您计划做什么,以及您可以在 Python 中完成多少工作,以及从 python 转换为 C 并再次转换回来的开销。如果用 C 编写代码有很大的好处,为什么不简单地用 C 编写整个东西呢?
    猜你喜欢
    • 2014-08-28
    • 2017-10-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-04
    • 1970-01-01
    相关资源
    最近更新 更多