Vorrei sapere come si può trattare il collo di bottiglia nel pezzo di codice indicato.Metodo efficiente per la ricerca di elementi nella matrice MATLAB
%% Points is an Nx3 matrix having the coordinates of N points where N ~ 10^6
Z = points(:,3)
listZ = (Z >= a & Z < b); % Bottleneck
np = sum(listZ); % For later usage
slice = points(listZ,:);
Attualmente per N ~ 10^6
, np ~ 1000
e number of calls to this part of code = 1000
, la dichiarazione collo di bottiglia sta prendendo circa 10 secondi in totale, che è un grande pezzo di tempo rispetto al resto del mio codice.
Alcuni ulteriori screenshot per un codice di esempio per solo la dichiarazione di indicizzazione come richiesto dal @EitanT
Sei sicuro che sia il collo di bottiglia (puoi mostrare i risultati del profilo)? E comunque qual'è 'num_calls'? –
@EitanT Sì, ho controllato attraverso il profiler MATLAB stesso e questa affermazione è davvero il collo di bottiglia – OrangeRind
@EitanT Ho aggiunto il risultato di profilazione – OrangeRind