Разумное создание объекта

Объект наверху

Графические объекты являются комплексными структурами, которые хранят информацию (данные и характеристики объектов), прислушиваются к определенным событиям, чтобы произойти (свойства обратного вызова) и могут вызвать изменения в других объектах разместить их существование (обновление пределов осей, и так далее). Поэтому создание объекта использует ресурсы.

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

Можно часто улучшать производительность следующим эти инструкции:

  • Не создавайте лишние объекты

  • Постарайтесь не искать иерархию объектов

Не создавайте лишние объекты

Ищите случаи, где можно создать меньше объектов и достигнуть тех же результатов. Например, предположите, что вы хотите построить график 10 1000 массив точек, показывающих только маркеры.

Этот код создает 1 000 объектов линии:

x = rand(10,1000);
y = rand(10,1000);
plot(x,y,'LineStyle','none','Marker','.','Color','b');

Преобразуйте данные от 10 1000 до 10000 1. Этот код создает график, который выглядит одинаково, но создает только один объект:

plot(x(:),y(:),'LineStyle','none','Marker','.','Color','b')

Использование NaNs, чтобы моделировать несколько строк

Если координатные данные содержат NaNs, MATLAB® не представляет те точки. Можно добавить NaNs к данным вершины, чтобы создать линейные сегменты, которые похожи на отдельные строки. Разместите NaNs в тех же местоположениях элемента в каждом векторе данных. Например, этот код, кажется, создает три отдельных строки:

x = [0:10,NaN,20:30,NaN,40:50];
y = [0:10,NaN,0:10,NaN,0:10];
line(x,y)

Изменение данных вместо того, чтобы создать новые объекты

Чтобы просмотреть различные данные по тому, что является в основном тем же графиком, более эффективно обновить данные существующих объектов (строки, текст, и т.д.) вместо того, чтобы воссоздать целый график.

Например, предположите, что вы хотите визуализировать эффект на свои данные переменных определенных параметров.

  1. Установите пределы любой оси, которая может быть определена заранее или устанавливает режимы пределов по осям на manual.

  2. Повторно вычислите данные с помощью новых параметров.

  3. Используйте новые данные, чтобы обновить свойства данных строк, текста, и т.д. объекты, используемые в графике.

  4. Вызовите drawnow, чтобы обновить фигуру (и все дочерние объекты в фигуре).

Например, предположите, что вы хотите обновить график как изменения данных:

figure
z = peaks;
h = surf(z);
drawnow 
zlim([min(z(:)), max(z(:))]);
for k = 1:50
   h.ZData = (0.01+sin(2*pi*k/20)*z);
   drawnow
end
Была ли эта тема полезной?