Я новичок в Matlab и программировании в целом, но мне любопытно, что я заметил в конкретном сценарии, который я сделал. У меня есть «Switch» в довольно сложном цикле for, который запускается много раз. При тестировании файла, в котором используются только случаи 0-4, я заметил, что если я удаляю варианты переключения 5-8 (без других изменений), мое время увеличивается с 18,2 до 4,5 секунд. Был ли я неправ, считая, что дела пропущены и не окажут заметного влияния на сроки, если они не использовались?
PS Я новичок во всем этом, так что это может быть ошибка пользователя, но я попытался проверить все, чтобы убедиться, что это не
EDIT
Хорошо, спасибо за помощь. Профилировщик был очень крут, но я не думаю, что он помог мне понять, что же не так. То, что замедляло код больше всего, это один конкретный оператор «если», который на самом деле содержит переключатель. Он был вызван 3 169 449 раз в каждом случае, но занял 1,22 секунды без случаев 5-8 и 15 секунд с. Код очень длинный, но я опубликую упрощенную версию без актуальных операций с кейсами. Профилировщик действительно сказал мне, что случаи 5-8 никогда не вызывались, и дело не в том, что они были сложными функциями, каждый случай соответствует фактическому числу 0-8 в качестве значения триггера.
for x= 1:length(firstinSeq)
for y= 1:length(littledataPassed-1)
if firstinSeq(x,1)== littledataPassed(y,1) && firstinSeq(x,2)== littledataPassed(y,2) %times and flight are the same
switch firstinSeq(x,3)
case 0
case 1
case 2
case 3
case 4
end
end
end
end
Опять же, часть скрипта, которая борется со всеми 9 случаями, - это оператор if перед переключателем.