现在的“最佳答案”听起来有点像我耳边的FUD。首先,普通的开发人员用C编写的代码比NumPy+Cython给你的代码要快,这一点并不明显。恰恰相反,在Python环境中正确运行所需的C代码所需的时间通常要花在用Cython编写一个快速原型、对它进行基准测试、优化它、以更快的方式重写它、再次对它进行基准测试上,然后再决定其中是否有真正需要用手工调试的C语言重写2%的代码并从Cython代码调用它,可能会提高5-10%的性能,也可能不会。
我正在用Cython编写一个库,它目前有大约18K行Cython代码,可以翻译成将近200K行C代码。我曾经通过在正确的位置注入大约20行手动调整的C代码,使一些非常重要的内部基级函数的速度提高了近25%。我花了几个小时重写并优化了这个小部分。与我当初不用C语言编写(并且必须维护)库所节省的大量时间相比,这真的是微不足道。
即使你比Cython更了解C,如果你了解Python和C,你也会很快学会Cython,无论在什么情况下,这都是值得投资的,尤其是当你学习数字的时候。80-95%的代码将从用高级语言编写中受益匪浅,因此您可以放心地将节省的一半时间投入到编写代码的速度上,就像您现在用低级语言编写代码一样。
,你想“把代码作为独立的C/C++库分发”是一个很好的理由,坚持C++。Cython总是依赖于CPython,这是一个相当依赖性的东西。但是,使用普通C/C++(除了Python接口)将不允许你利用NoMPy,因为这也依赖于CPython。所以,像往常一样,用C语言写东西的时候,你必须先做大量的基础工作,然后才能使用实际的功能。在开始这项工作之前,你应该认真考虑一下。