Borrar filtros
Borrar filtros

Time consumption of string copied to string array

2 visualizaciones (últimos 30 días)
Thomas Cimiega
Thomas Cimiega el 8 de Mayo de 2022
Comentada: Thomas Cimiega el 9 de Mayo de 2022
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?

Respuesta aceptada

Matt J
Matt J el 8 de Mayo de 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 comentarios
Thomas Cimiega
Thomas Cimiega el 8 de Mayo de 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 el 9 de Mayo de 2022
Your approach using
pos=find(pos,1);
if ~isempty(pos)
obj.dataList(pos)=value;
end
reduced the processing time by half, thank you!

Iniciar sesión para comentar.

Más respuestas (0)

Categorías

Más información sobre Logical en Help Center y File Exchange.

Productos


Versión

R2021b

Community Treasure Hunt

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

Start Hunting!

Translated by