文档

执行速度

提高生成的C / c++代码的执行速度

使用代码生成选项和优化以提高生成的代码的执行速度。您可以修改或禁用动态内存分配,会影响执行速度。可以通过使用生成并行代码parfor循环。当可用时,利用现有优化C代码和专业图书馆加速执行。

为更多的信息关于如何优化代码具体情况,看看优化策略

功能

parfor 并行循环
coder.varsize 声明适应数据
coder.const 表达式折叠成常量在生成的代码
coder.inline 控制在生成的代码内联
coder.unroll 展开循环复制的每个循环迭代循环体
coder.ceval 调用外部C / c++函数

coder.LAPACKCallback 抽象类用于指定LAPACK图书馆和LAPACKE LAPACK调用头文件在生成的代码
coder.BLASCallback 抽象类用于指定BLAS图书馆和布拉斯特区CBLAS报头和数据类型信息在生成的代码调用
coder.fftw.StandaloneFFTW3Interface 抽象类指定一个FFTW图书馆FFTW调用生成的代码

例子和如何

适应可变数组

减少动态内存分配

改善执行时间通过最小化动态内存分配。

为适应可变数组提供最大尺寸

使用技术来帮助代码生成器决定适应可变数组的上界。

禁用在代码生成动态内存分配

禁用应用程序中动态内存分配或在命令行。

设置阈值动态内存分配

禁用动态内存分配的数组小于一定规模。

循环

生成代码与平行的for循环(parfor)

生成一个回路,在共享内存多核平台上并行运行。

在parfor-Loops指定线程的最大数量

生成一个墨西哥人循环迭代并行执行的函数在特定数量的可用内核。

控制编译parfor-Loops

治疗parfor循环,parfor循环运行在单独的线程中。

安装OpenMP macOS平台上图书馆

安装OpenMP库生成平行循环在macOS平台。

减少冗余操作循环

移动业务以外的循环。

展开for循环

控制循环展开。

函数调用

消除冗余拷贝函数输入

使用相同的变量作为输入和输出函数。

内联代码

内联消除函数调用的开销通过替换函数的函数调用与身体。

控制内联

限制内联减少生成的代码的大小和内存使用。

函数调用折叠成常量

减少执行时间用常数代替表达式生成的代码。

数值边界情况

禁用支持整数溢出金宝app或非限定的

提高性能通过抑制一代的支持代码来处理整数溢出或非限定的。金宝app

外部代码集成

集成外部/自定义代码

提高性能通过整合优化自己的代码。

加快生成独立的代码通过使用线性代数LAPACK调用

为某些线性代数函数生成LAPACK调用。指定要使用LAPACK库。

加快矩阵运算生成独立的代码通过使用布拉斯特区调用

bla呼吁某些低级的矩阵运算生成。指定要使用布拉斯特区图书馆。

加快快速傅里叶变换使用FFTW库调用生成的独立的代码

为快速傅里叶变换生成FFTW库调用。指定FFTW图书馆。

同步多线程访问FFTW规划生成独立的代码

实现FFT库调类方法并提供支持C代码来防止多个用户的并行访问FFTW规划。金宝app

概念

优化策略

优化的执行速度和内存使用生成的代码。

动态内存分配和性能

动态内存分配可以减缓执行速度。

并行算法的加速使用for循环(parfor)

生成墨西哥人的功能parfor循环。

在parfor-Loops分类变量

内部变量parfor循环分为循环、切片、广播、减少或暂时的。

在parfor-Loops减少作业

积累减少变量的值取决于一起循环迭代。

MATLAB编码器优化生成的代码

来提高性能的生成的代码,代码生成器使用优化。

memcpy优化

通过使用代码生成器生成的代码优化memcpy

memset优化

通过使用代码生成器生成的代码优化memset

LAPACK调用生成的代码

LAPACK函数调用提高生成的代码的执行速度对某些线性代数函数。

巴拉斯在生成的代码调用

布拉斯特区函数调用提高生成某些低级代码的执行速度向量和矩阵运算。

生成代码,使用行阵列布局

生成C / c++代码行元素连续存储在内存中。

故障排除

故障排除parfor-Loops

诊断错误的代码生成parfor循环。

墨西哥人上生成macOS平台保持在内存中加载

发生在源MATLAB解决问题®代码包含全球或持久性变量可及的身体parfor循环。

特色的例子