You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Matlab Runtime9.10开发的App编译为9.7版本后运行变慢问题咨询

问题原因及修复方案

跨版本性能差异的官方原因

  • MathWorks在R2020a(对应Runtime v9.10)的JIT即时编译器中,新增了循环内动态数组自动预分配优化特性:可自动识别Temp = [Temp; x]这类循环内逐次追加的数组操作,暗中提前分配足够的内存空间,避免了每次拼接都全量拷贝数据的O(n²)开销,因此该段代码在v9.10环境下运行效率符合预期。
  • Runtime v9.7对应Matlab R2019b版本,该版本的JIT编译器未支持上述优化逻辑,循环内每次数组拼接都会触发完整的内存重新分配+已有数据拷贝操作,当循环次数达到百万级时,时间开销会指数级上升,最终表现为性能显著下降。

修复方案

你当前贴出的代码逻辑完全可以规避循环操作,直接用Matlab内置的矩阵维度转换实现,所有Runtime版本都可以获得最优性能:

% 原逻辑等价实现,无循环、无动态扩容问题,执行效率提升千倍以上
Output = ones(length(A),length(B));
Temp = Output(:);

如果实际业务中有不可省略的循环逻辑,通用优化方式是提前给Temp预分配足够的内存空间,不要在循环内动态扩容:

Output = ones(length(A),length(B));
len_A = length(A);
len_B = length(B);
% 提前预分配Temp的内存
Temp = zeros(len_A * len_B, 1);
idx = 1;
for ii = 1:len_A
  for jj = 1:len_B
    Temp(idx) = Output(ii,jj);
    idx = idx + 1;
  end
end

内容的提问来源于stack exchange,提问作者Sam

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 05:36:03