BaseContainer Performance

THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED

On 29/08/2006 at 07:47, xxxxxxxx wrote:

User Information:
Cinema 4D Version:   9.6 
Platform:   Windows  ; Mac  ;  
Language(s) :     C++  ;

---------
Hi,

I have a general question concerning getting values out of a BaseContainer instance.

I need some values from my plugin object several times in a calculation, so I am asking myself if it´s faster to store the value from the basecontainer in a variable of mine and use this one or if it´s performance-wise the same if I´d retrieve the values directly from the basecontainer?

I assume the former is the case but I am not absolutely sure.

Thanks
Katachi

THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED

On 29/08/2006 at 09:50, xxxxxxxx wrote:

Most definitely faster to use a variable to store the BaseContainer value if you are going to use it more than once. This will be slow if done multiple times:

x = m * obj->GetDataInstance()->GetReal(ID_MYREAL);
y = n * obj->GetDataInstance()->GetReal(ID_MYREAL);
z = o * obj->GetDataInstance()->GetReal(ID_MYREAL);

This won't be quite as slow:

BaseContainer* bc = obj->GetDataInstance();
x = m * bc->GetReal(ID_MYREAL);
y = n * bc->GetReal(ID_MYREAL);
z = o * bc->GetReal(ID_MYREAL);

But this is better:

BaseContainer* bc = obj->GetDataInstance();
r = bc->GetReal(ID_MYREAL);
x = m * r;
y = n * r;
z = o * r;

Of course, you should weigh how many times you'll need to reference the BaseContainer to set or get values as well as how often the values are needed. For a one-off use, the quickest method would be (and avoid the stack variables) :

x = m * obj->GetDataInstance()->GetReal(ID_MYREAL);

THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED

On 29/08/2006 at 10:01, xxxxxxxx wrote:

Hi Kuro,

thanks, that confirms what I am currently doing. Thanks for the check! 🙂