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! :)


Log in to reply