2013-12-17 110 views
3

我对我的程序有一个简单的计划:用Python做所有的输入解析和数据预处理,然后传递很多结构并调用我要用C编写的ONCE数字运算函数 这里是我的问题:什么会更快(就执行速度而言)?用ctypes调用C函数还是用cython编写它?cython vs ctypes函数执行速度

+1

使用用Cython保持在一起的C代码大段对比VS ctypes的调用一个C功能的单一的时间不显著不同。如果您在Cython中编写函数,添加足够的静态类型以使其表现良好,那将更加有趣。它可能不是那么快,但是Cython版本比C更易读,并且更容易维护。 – eryksun

+0

这也将取决于你想要调用的确切代码。对于一个人来说,cython的速度并不比我的python快(猜测我有更多的技巧可以学习),所以我倾向于使用ctypes来处理这种事情。然而,对于一大类问题,普通的numpy向量操作几乎和使用cython或ctypes一样快,所以先看看那里,因为它是最简单的。 –

回答

1

给定无限次的优化代码Ctypes可能会更快,因为您可以尽可能多地将繁重的代码推入编译代码。

cython采用类似python的代码,并将其转换为C代码,并提供很多注意事项和例外。如果cython是完美的,那么它的编码速度将与Python的C-API编码一样快。 cython是快速代码开发的绝佳工具,但并不完美。

Ctypes将需要对输入变量进行一些处理,以便将它们清理干净。如果你正在做一些公平的数据预处理,这可能不会成为问题。

像往常一样,你需要决定与编码时间/代码的可读性/代码的可重用性 执行速度是多么的重要相比,这似乎很奇怪,我是唯一的执行速度感兴趣,还是想在代码做任何它蟒蛇。

相反地,蟒编码的一般范例会倾向于与具有由Python包装