执行速度

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

使用代码生成选项和优化来改善生成代码的执行速度。您可以修改或禁用动态内存分配,这可能会影响执行速度。可通过使用产生的并行化代码PARFOR循环。当可用时,利用预先存在的优化的C代码和专用库,以加快执行的。

有关如何优化您的具体情况代码的详细信息,请参阅优化策略

功能

PARFOR 平行对于-环
coder.varsize 声明可变大小数据
coder.const 折入表达式中的常数生成的代码
coder.inline 控制在生成的代码内联
coder.unroll 对于通过使循环体的副本每次循环迭代-loop
coder.ceval 调用外部C / C ++函数

coder.LAPACKCallback 抽象类用于指定LAPACK库和LAPACKE头文件中生成的代码LAPACK呼叫
coder.BLASCallback 抽象类,用于指定在产生码BLAS库和CBLAS头和数据类型信息BLAS呼叫
coder.fftw.StandaloneFFTW3Interface 抽象类用于指定FFTW库中生成的代码FFTW调用

示例以及如何

可变大小的数组

最小化动态内存分配

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

提供了可变大小的数组最大大小

使用的技术,以帮助码发生器确定上限为可变大小的阵列。

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

禁用动态存储器分配在应用中或在命令行。

设置动态内存分配阈值

对于阵列禁用动态存储器分配小于一定的尺寸。

循环

与并行for循环生成代码(PARFOR)

产生一个循环,在共享内存并行运行多核平台。

指定的最大线程数在PARFOR,循环

生成MEX函数,在并行可用的核心特定数量的执行循环迭代。

PARFOR-循环控制编译

对待PARFOR-loops为PARFOR-loops在单个线程运行。

在MacOS平台安装OpenMP库

安装OpenMP库生成并行对于-loops上苹果系统平台。

最大限度地减少冗余操作中循环

向外移动的操作循环的可能时。

展开for循环

控制循环展开。

函数调用

避免功能的输入的数据副本中生成的代码

生成通过引用传递输入参数的代码。

内嵌代码

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

控制内联

限制内联,以减少产生的代码和内存使用情况的大小。

折叠功能调用到常量

通过在所生成的代码以恒定的替换表达式减少执行时间。

数值边缘情况

整数溢出或Non万博1manbetxfinites禁用支持

提高通过抑制支承代码来处理整数溢出或nonfinites发电性能。万博1manbetx

外部代码集成

集成外部/自定义代码

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

加快线性代数中生成的独立代码利用LAPACK电话

产生一定的线性代数函数调用LAPACK。指定LAPACK库来使用。

加快矩阵运算所产生独立代码利用BLAS电话

产生某些低级别的矩阵运算BLAS电话。指定BLAS库使用。

加快快速利用FFTW库调用傅立叶变换所产生独立代码

产生快速傅立叶变换FFTW库的调用。指定FFTW库。

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

实施FFT库回调类的方法,并提供配套的C代码,以防止FFTW规划的并发访问。万博1manbetx

概念

优化策略

优化执行速度或所生成的代码的内存使用情况。

动态内存分配和性能

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

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

生成MEX函数PARFOR-loops。

变量的PARFOR,循环分类

里面的变量PARFOR-loops被分类为环路,切片,广播,减少或暂时的。

减少分配在PARFOR,循环

的降低可变累积取决于所有的循环迭代一起的值。

MATLAB编码器优化生成的代码

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

优化的memcpy

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

memset的优化

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

在生成的代码调用LAPACK

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

BLAS调用生成的代码

BLAS函数调用提高对某些低级别的矢量和矩阵操作而生成的代码的执行速度。

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

生成C / C ++与连续存储在存储器行元素代码。

故障排除

故障排除PARFOR-循环

代码生成的诊断错误PARFOR-loops。

MEX生成在MacOS平台住体验加载到内存中

出现在源MATLAB排查问题®代码包含从身体到达全球性或持续性变量PARFOR-环。

精选示例