在Python中实现一个函数和在C中实现它然后从Python调用它之间是否存在差异(就执行时间而言)?如果是这样,为什么?
答案 0 :(得分:5)
Python(至少是“标准”CPython实现)从未实际编译为本机机器代码;它编译为字节码然后被解释。因此,实际编译为机器代码的C函数运行得更快;问题是它是否会产生相关的差异。那么你想要解决的实际问题是什么?
答案 1 :(得分:1)
如果我理解并正确地重述你的问题,你会问,如果将python包装在一个c可执行文件上,无论如何比纯python模块本身更快?答案是,它取决于可执行文件和您正在执行的任务类型。
答案 2 :(得分:1)
C版本通常更快,但并非总是如此。加速的一个要点是C代码不必动态查找值,如Python(Python具有引用语义)。一个很好的例子是Numpy。键入Numpy arrays,数组中的所有值都具有相同的类型,并在内部存储在连续的内存块中。这是numpy如此快得多的主要原因,因为它会跳过Python必须执行的所有动态变量查找。如果算法在Python数据结构上运行,那么算法的最有效C实现可能变得非常慢,其中每个值都必须动态查找。
自己实现这些事情并节省Python C-API的所有麻烦的好方法是使用Cython。
答案 3 :(得分:0)
通常,用C语言编写的函数将比Python等效函数快得多。整合起来要困难得多,因为它涉及:
您可能希望确保在尝试此操作之前的好处超过成本,这意味着只应保留代码的性能关键部分,而这些部分使用纯Python无法快速完成。
如果你真的需要沿着这条路走下去,Boost.Python可以让这项任务变得更加痛苦。