社区所有版块导航
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学习  »  Python

何时使用c或cpp来加速python或matlab实现?

havakok • 3 年前 • 1399 次点击  

我想创建一个房间脉冲响应的特例。我在跟踪 this implemetation 用于室内脉冲响应发生器。我也在关注 this tutorial 用于将c++\c与python集成。

根据教程:

  1. 您希望通过将关键部分转换为C来加速Python代码的特定部分。C不仅具有更快的执行速度,而且还允许您在谨慎的情况下突破GIL的限制。

然而,在看MATLAB示例时,我看到的cpp代码段所做的只是常规循环和数学计算。在本例或任何其他示例中,c\cpp将以何种方式比python\MATLAB更快?任何通用c\cpp代码都会运行得更快吗?如果是,为什么?如果没有,在选择c\cpp段实施时,我需要寻找哪些指标?c\cpp中哪些操作更快?

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/132352
文章 [ 1 ]  |  最新文章 3 年前
shahriar
Reply   •   1 楼
shahriar    3 年前

为什么使用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也是如此)。