Very Slow Assignment for Clas Properties

9 visualizaciones (últimos 30 días)
Greg
Greg el 4 de Ag. de 2011
Hi
I have a class with a number of properties. One of the methods for this class which uses these properties is called many times (530,553 times) as part of a sim i run.
Problem is referencing the properties takes up too much cumulative time.
For example I have:
classdef World < handle
properties state = 0;
end
methods
function thisWorld = World()
end
function act(thisWorld)
myState = thisWorld.state; % takes 15 seconds when called 503k end
Another method updates the state property prior to calling the act() method, the values 'state' can be assigned range from 1:1:101.
Please help end
end

Respuestas (2)

Daniel Shub
Daniel Shub el 6 de Ag. de 2011
This is a well known problem with MATLAB classes. Unfortunately there is not a good solution that I know of. I would suggest starting at:

Greg
Greg el 15 de Ag. de 2011
Thanks for the response.
It does seem very poor that such a performance hit it incurred when using classes. I'm not a professional programmer but as I see it the use of OO is particularly useful in structuring and maintaining complex code which typically would also be time consuming like sims.
As a result the OO features of the Matlab language are for me redundant.
Are there any plans from Mathworks to address this issue?
Many thanks Greg
  1 comentario
Daniel Shub
Daniel Shub el 15 de Ag. de 2011
It is a problem. Sometimes you can get around the problem by changing how your code works. For example:
N = 503e3;
thisWorld = World;
for ii = 1:N
myState = thisWorld.state;
end
is much faster than
for ii = 1:N
act(thisWorld);
end
obviously not all problems can be solved this way, but sometimes they can be.

Iniciar sesión para comentar.

Categorías

Más información sobre Performance and Memory en Help Center y File Exchange.

Productos

Community Treasure Hunt

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

Start Hunting!

Translated by