Time consumption of string copied to string array

1 visualizzazione (ultimi 30 giorni)
I programmed a simulation and currently optimizing the function in terms of time. Therefore I use the profiler to check the time consumption per function. Here I was wondering, why a simple copy instruction of a string into a string array - that is indeed often called - takes nearly 10% of simulation time:
in line 65 you can see the instruction. ‘obj.dataList’ is a string-array, ‘pos’ a logical array with equal size of ‘obj.dataList’ and only a single true value and ‘value’ a string. I do not know what exactly happens "inside" of Matlab; since I am using strings, there has to be some kind of repeating memory allocation which of course takes time. But that this single line takes 10% of simulation time, seems a bit long.
Does anyone have an idea, how I can optimize that?

Risposta accettata

Matt J
Matt J il 8 Mag 2022
pos a scalar between 1 and the length of obj.dataList and value a string.
That is definitely not the case. In the preceding line, you can see that pos is the result of a logical operation, and therefore is an array consisting of logical zeros and ones.
  5 Commenti
Thomas Cimiega
Thomas Cimiega il 8 Mag 2022
Thank you. Yes I also thought of mapping the correct indices initially and setting 'pos' according to that instead of using a binary array. I will try this and solve the thread, if it works.
Thomas Cimiega
Thomas Cimiega il 9 Mag 2022
Your approach using
pos=find(pos,1);
if ~isempty(pos)
obj.dataList(pos)=value;
end
reduced the processing time by half, thank you!

Accedi per commentare.

Più risposte (0)

Categorie

Scopri di più su Get Started with MATLAB in Help Center e File Exchange

Prodotti


Release

R2021b

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by