Нахождение узких мест кода

Используйте профилировщик кода, чтобы определить, какие функции вносят большую часть времени во время выполнения. Можно сделать повышения производительности путем сокращения времен выполнения алгоритмов и вычислений по мере возможности.

Если вы оптимизировали свой код, используйте следующие методы, чтобы уменьшать издержки создания объекта и обновления отображения.

Например, предположите, что вы строите 10 1000 массивы элемента с помощью myPlot функция:

function myPlot
   x = rand(10,1000);
   y = rand(10,1000);
   plot(x,y,'LineStyle','none','Marker','o','Color','b');
end
profile on
myPlot
profile viewer

Когда вы профилируете этот код, вы видите, что большая часть времени проведена в myPlot функция:

Поскольку массивы X и Y содержат 1 000 столбцов данных, функция построения графика создает 1 000 объектов линии. В этом случае можно достигнуть тех же результатов путем создания одной линии с 10 000 точек данных:

function myPlot
   x = rand(10,1000);
   y = rand(10,1000);
   % Pass x and y as 1-by-1000 vectors
   plot(x(:),y(:),'LineStyle','none','Marker','o','Color','b');
end
profile on
myPlot
profile viewer

Время создания объекта является основным фактором в этом случае:

Можно часто достигать улучшений скорости выполнения путем понимания, как избежать или минимизировать по сути медленные операции. Для получения информации о том, как улучшать производительность с помощью этого инструмента, см. документацию для profile функция.