社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  shahriar  »  全部回复
回复总数  1
3 年前
回复了 shahriar 创建的主题 » 何时使用c或cpp来加速python或matlab实现?

为什么使用C++来加速Python

C++代码编译成机器代码。这使得它比解释器语言更快(但是,如果你不知道你在做什么,那么不是每个C++写的代码都比Python代码快)。在C++中,可以直接访问数据指针并使用 SIMD 指导他们,使他们的速度提高数倍。您还可以对循环和代码进行多线程处理,以使它们运行得更快(可以是显式多线程,也可以是类似的工具) OpenMP ).你不能用高级语言(至少不能正确地)做这些事情。

何时使用C++加速Python

并非代码的每一部分都值得优化。您应该只优化计算成本高且成本低的部件 bottleneck 你的节目。这些部分可以用C或C++编写,并通过绑定使用Python(通过使用 pybind11 例如)。大型机器学习库,比如 PyTorch TensorFlow 做这个。

专用硬件

有时候,有一个优化的C++ CPU代码是不够的。然后你可以评估你的问题,如果合适的话,你可以使用专用的硬件。这些硬件可以从低级(比如FPGA)到高级硬件,比如我们系统上通常有的专用图形卡(比如 CUDA 为NVIDIA GPU编程)。

低级语言和高级语言中的常规代码差异

即使不使用多线程或SIMD操作,使用编译语言也有很大的优势。例如,在C数组或 std::vector 相比于在Python数组上循环或使用,C++中的速度可以快100倍以上。 for 在MATLAB中(最近) JIT compiling 用于加速高级语言,但仍然存在差异)。这有很多原因,其中一些是在编译时识别的基本数据类型,并且具有连续数组。这就是为什么人们建议在简单的Python循环上使用Numpy矢量化操作(对于MATLAB也是如此)。