我有以下代码被执行了数千次。通过使用分析器,我将第二行(new_inds=...
)确定为整个代码中最耗时的一行。有没有更好/更快的方法来执行此操作?
for j=1:length(cls)
new_inds=[sti(:).time]==i & [sti(:).cluster]==cls(j);
% more code here
%
%
prob(j)=...
end
pr=prod(prob);
如果没有看到更多的代码,很难确定,但我希望这会加快速度:
indexArg2 = [sti(:).cluster];
index1 = [sti(:).time]==i
for j=1:length(cls)
new_inds=index1 & indexArg2==cls(j);
% more code here
%
%
prob(j)=...
end
pr=prod(prob);
我在这里的建议是将索引中与j
无关的部分置于j
循环之外。
附言有一种观点认为,您应该使用 ii
和 jj
作为计数器,而不是 i
和 j
(因为它们表示复数)。 我读过(但从未见过证明)使用 ii
和 jj
比 i
和 j
更快......