Main Content

Execution Speed

R2026b
Improve execution speed of generated C/C++ code

Optimize generated code for faster execution. To improve execution speed, you can:

  • Modify or disable dynamic memory allocation.

  • Generate OpenMP-enabled code by using parfor-loops or automatic parallelization.

  • Generate SIMD-vectorized code.

  • Generate code that calls optimized external libraries.

  • Use code replacement libraries to replace MATLAB functions with custom optimized C/C++ functions during code generation.

For more information about how to optimize your code for specific conditions, see Optimize Generated C/C++ and MEX Code.

Functions

expand all

coder.timeitMeasure execution time of generated C/C++ code (Since R2024b)
coder.perfCompareCompare execution times of MATLAB code and code generated using multiple configuration objects (Since R2024b)
coder.loop.interchangeInterchange loop indices in generated code (Since R2023a)
coder.loop.parallelizeParallelize for-loops in generated code or disable automatic parallelization
coder.loop.reverseReverse loop iteration order in generated code (Since R2023a)
coder.loop.tileTile for-loops in generated code (Since R2023a)
coder.loop.unrollAndJamUnroll and jam for-loops in generated code (Since R2023a)
coder.loop.vectorizeVectorize for-loops in generated code (Since R2023a)
coder.unrollUnroll for-loop by making a copy of the loop body for each loop iteration
parforParallel for-loop
coder.inlineControl inlining of current function in generated code
coder.inlineCallInline called function in generated code (Since R2024a)
coder.nonInlineCallPrevent inlining of called function in generated code (Since R2024a)
coder.areUnboundedVariableSizedArraysSupportedCheck if current configuration settings allow unbounded variable-size arrays (Since R2024a)
coder.varsizeResolve size incompatibility errors and declare upper bounds
coder.constFold expressions into constants in generated code
coder.cevalCall C/C++ function from generated code

Classes

coder.BLASCallbackAbstract class for specifying the BLAS library and CBLAS header and data type information for BLAS calls in generated code
coder.LAPACKCallbackAbstract class for specifying the LAPACK library and LAPACKE header file for LAPACK calls in generated code
coder.fftw.StandaloneFFTW3Interface Abstract class for specifying an FFTW library for FFTW calls in generated code
coder.loop.ControlLoop optimizations in generated code (Since R2023a)

Topics

Generated Code Optimizations

memcpy and memset Optimizations

Variable-Size Arrays

Array Layout

Loops

Code Replacement

  • What Is Code Replacement?
    Why and how to replace code. Code replacement libraries that MathWorks provides. Contents of a code replacement library and how the code generator uses the contents. Terminology and limitations.
  • Choose a Code Replacement Library
    Explore available code replacement libraries and library content to find a suitable match for your code requirements.

Function Calls

Numerical Edge Cases

External Code Integration

Troubleshooting

Troubleshooting parfor-Loops

Diagnose errors for code generation of parfor-loops.

Resolve Issue: coder.inline("never") and coder.nonInlineCall Do Not Prevent Function Inlining

Troubleshoot instances of coder.inline('never') not preventing inlining.

MEX Generated on macOS Platform Stays Loaded in Memory

Troubleshoot issues that occur when the source MATLAB code contains global or persistent variables that are reachable from the body of a parfor-loop.

Featured Examples