MATLAB scatter3, plot3 расхождения в скорости

Речь идет о том, как MATLAB может занять очень разное время для построения одного и того же объекта - и почему.

Я генерирую 10000 точек в трехмерном пространстве:

X = rand(10000, 1);
Y = rand(10000, 1);
Z = rand(10000, 1);

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

alt text

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

Массовое построение с использованием scatter3:

>> tic; scatter3(X, Y, Z); drawnow; toc
Elapsed time is 0.815450 seconds.

Индивидуальное построение с использованием scatter3:

>> tic; hold on;
for i = 1:10000
    scatter3(X(i), Y(i), Z(i), 'b');
end
hold off; drawnow; toc
Elapsed time is 51.469547 seconds.

Массовое построение с использованием plot3:

>> tic; plot3(X, Y, Z, 'o'); drawnow; toc
Elapsed time is 0.153480 seconds.

Индивидуальное построение с использованием plot3:

>> tic; hold on
for i = 1:10000
    plot3(X(i), Y(i), Z(i), 'o');
end
drawnow; toc
Elapsed time is 5.854662 seconds.

Что MATLAB делает за кулисами в «более длинных» подпрограммах, которые занимают так много времени? Каковы преимущества и недостатки использования каждого метода?

Изменить: Благодаря совету Бена Фойгта (см. Ответы) я включил команды drawow в определение времени, но это мало повлияло на время.

7
задан Bill Cheatham 6 November 2010 в 00:29
поделиться