执行速度
提高生成的C / c++代码的执行速度
使用代码生成选项和优化以提高生成的代码的执行速度。您可以修改或禁用动态内存分配,会影响执行速度。可以通过使用生成并行代码parfor
循环。当可用时,利用现有优化C代码和专业图书馆加速执行。
为更多的信息关于如何优化代码具体情况,看看优化策略。
功能
parfor |
平行为 循环 |
coder.varsize |
声明适应数据 |
coder.const |
表达式折叠成常量在生成的代码 |
coder.inline |
控制内联的一个特定的函数生成的代码 |
coder.loop.interchange |
交换循环指数在生成的代码 |
coder.loop.parallelize |
并行化的具体为 在生成的代码循环;禁用自动并行化 |
coder.loop.reverse |
反向循环迭代顺序生成的代码 |
coder.loop.tile |
瓷砖为 循环在生成的代码 |
coder.loop.unrollAndJam |
展开和果酱为 循环在生成的代码 |
coder.unroll |
展开为 复制循环的循环体为每个循环迭代 |
coder.loop.vectorize |
Vectorize为 循环在生成的代码 |
coder.ceval |
调用外部C / c++函数 |
类
coder.BLASCallback |
抽象类用于指定BLAS图书馆和布拉斯特区CBLAS报头和数据类型信息在生成的代码调用 |
coder.LAPACKCallback |
抽象类用于指定LAPACK图书馆和LAPACKE LAPACK调用头文件在生成的代码 |
coder.fftw.StandaloneFFTW3Interface |
抽象类指定一个FFTW图书馆FFTW调用生成的代码 |
coder.loop.Control |
循环优化控制对象 |
主题
生成的代码优化
- 优化策略
优化的执行速度和内存使用生成的代码。 - MATLAB编码器优化生成的代码
来提高性能的生成的代码,代码生成器使用优化。 - 在生成的代码优化隐式扩张
隐式扩张在生成的代码中默认情况下是启用的。
适应可变数组
- 动态内存分配和性能
动态内存分配可以减缓执行速度。 - 减少动态内存分配
改善执行时间通过最小化动态内存分配。 - 为适应可变数组提供最大尺寸
使用技术来帮助代码生成器决定适应可变数组的上界。 - 禁用在代码生成动态内存分配
禁用应用程序中动态内存分配或在命令行。 - 设置阈值动态内存分配
禁用动态内存分配的数组小于一定规模。 - 优化动态数组访问
改善执行时间的动态数组生成的C代码。
阵列布局
- 生成代码,使用行阵列布局
生成C / c++代码行元素连续存储在内存中。
循环
- 并行算法的加速使用for循环(parfor)
生成墨西哥人的功能parfor
循环。 - 在parfor-Loops分类变量
内部变量parfor
循环分为循环、切片、广播、减少或暂时的。 - 生成代码与平行的for循环(parfor)
生成一个回路,在共享内存多核平台上并行运行。 - 在parfor-Loops指定线程的最大数量
生成一个墨西哥人循环迭代并行执行的函数在特定数量的可用内核。 - 指定最大数量的线程运行并行for循环在生成的代码中
平行为
循环在特定数量的可用内核生成的代码。 - 在parfor-Loops减少作业
积累减少变量的值取决于一起循环迭代。 - 控制编译parfor-Loops
治疗parfor
循环,parfor
循环运行在单独的线程中。 - 安装OpenMP macOS平台上图书馆
安装OpenMP库生成平行为
循环在macOS平台。 - 减少冗余操作循环
移动业务以外的循环。 - 展开for循环和parfor-Loops
控制循环展开。 - 自动并行化的循环生成的代码
迭代并行为
循环可以同时运行多个核心目标硬件。 - 为MATLAB生成SIMD代码功能
提高使用英特尔生成的代码的执行速度®上交所和英特尔AVX技术。 - 在生成的代码优化循环
生成代码与循环转换根据您的性能需求。
函数调用
- 避免数据拷贝函数输入生成的代码
生成代码,输入参数按引用传递。 - 控制内联微调性能和生成的代码的可读性
内联消除函数调用的开销但是可以产生更大的C / c++代码,减少代码的可读性。 - 函数调用折叠成常量
减少执行时间用常数代替表达式生成的代码。
数值边界情况
- 禁用支持整数溢出金宝app或非限定的
提高性能通过抑制一代的支持代码来处理整数溢出或非限定的。金宝app
外部代码集成
- LAPACK调用生成的代码
LAPACK函数调用提高生成的代码的执行速度对某些线性代数函数。 - 巴拉斯在生成的代码调用
布拉斯特区函数调用提高生成某些低级代码的执行速度向量和矩阵运算。 - 优化为快速傅里叶变换函数所生成的代码
选择正确的快速傅里叶变换实现您的工作流和目标硬件。 - 集成外部/自定义代码
提高性能通过整合优化自己的代码。 - 加快生成独立的代码通过使用线性代数LAPACK调用
为某些线性代数函数生成LAPACK调用。指定要使用LAPACK库。 - 加快矩阵运算生成独立的代码通过使用布拉斯特区调用
bla呼吁某些低级的矩阵运算生成。指定要使用布拉斯特区图书馆。 - 加快快速傅里叶变换使用FFTW库调用生成的独立的代码
为快速傅里叶变换生成FFTW库调用。指定FFTW图书馆。 - 同步多线程访问FFTW规划生成独立的代码
实现FFT库调类方法并提供支持C代码来防止多个用户的并行访问FFTW规划。金宝app
故障排除
诊断错误的代码生成parfor
循环。
解决问题:coder.inline(“从未”)并不妨碍内联函数
故障诊断的实例coder.inline(“不”)
没有防止内联。
发生在源MATLAB解决问题®代码包含全球或持久性变量可及的身体parfor
循环。