用途:该技能面向 MATLAB 代码性能优化,帮助将低效实现改写为更快的向量化、内存友好写法,并通过性能分析定位瓶颈。触发场景包括用户提到 slow、performance、optimize、speed up、efficient、memory,或要求优化循环、降低内存占用、提升算法性能、并行化计算。
主要能力:核心原则包括向量化(用 .*、./、.^ 等逐元素运算替代循环)、循环前预分配数组、优先使用内置函数。向量化技巧涵盖逐元素运算、逻辑索引替代条件循环、矩阵乘法替代嵌套循环、cumsum/cumprod 等累积运算。内存优化包括选用 single、整数类型、稀疏矩阵、及时 clear 变量、原地操作。性能分析使用 profile on / profile viewer / profile off 与 timeit、tic/toc 对比。常见模式包括用逻辑索引替代 find、用隐式扩展替代 repmat、把重复计算移出循环、高效字符串拼接、用 table 组织混合数据。算法层面可用 conv、filter、conv2、imfilter、pdist2、sort、ismember、unique 等内置函数。并行计算涉及 parfor、parpool、parfeval、gpuArray。高级优化包括 MEX、persistent 缓存、JIT 友好写法。
使用方式:先 profile 测量再优化,定位耗时函数后应用相应技术,再用 timeit 验证加速比并迭代。检查清单覆盖向量化、预分配、内置函数、逻辑索引、数据类型、稀疏矩阵、重复计算、字符串拼接、性能分析、矩阵运算、并行与缓存。
适用场景:图像处理、统计分析、时间序列处理等数值计算代码的加速与内存压缩。
限制:需先分析再优化,避免过早优化与过度向量化;注意 MATLAB 列优先的内存访问模式;parfor 与 GPU 可能因开销反而更慢;MEX 需编译 C/C++。具体版本要求与平台支持暂未提供。