Really nice guys thanks a lot for the inputs !

Just one note on Alan's code. His current method returns all the expression
driven by an object not by a specific parameter.
I had to slightly adapt the code to get the specific local parameter I'm
looking for !

really happy, this is so fast now !



On 29 July 2012 16:49, jo benayoun <[email protected]> wrote:

> Alan, you're opening a new interesting way. :)
>
> Alok, DOD is not a pattern but a paradigm as OOP.  If you have the time to
> take a look deeper at it, you will understand what I am saying when I
> reject any ideas concerning further querying on the data.
>
> I don't remember where I've read this (and I regret), someone was
> publishing simple profiling results of regular python code and was
> highlighting that 70 perc of the ressources were exclusively consumed by
> dictionaries and this tends to grow because people are more and more
> seduced by the convenience of those objects.
> By replacing those by simpler data structures or other mechanisms, speed
> performances have been improved considerably as well as CPU and memory
> usage (something like 2 times faster if I remember correctly).
> I am really worried when reading "They may have more memory requirements,
> but these days, it really is not a problem." because this is clearly for
> me an excuse for developers to do code and not good code.
> Personally, I don't consider educational material even from Google
> engineers as a reference as it's educational.
> And yes, I am capable of beating appending on hash table in worst case
> with a single linked list.  Look at Python C implementation to see how they
> resolve collisions.
>
> But even considering the query as important, nothing avoid you to pass
> parameter by parameter to the function to control the flow of your code.
>  Like that no need of any further querying.
> I've done some other tests today and friday and I am surprised that your
> function produce wrong results on some models (I didn't find the why yet).
> But still, considering everything which has been said, here is what I got
> as last results on my machine at home for a model with still thousand of
> expressions and launching a search for 11 parameters of the same ppg. (some
> of those parameters are driving custom operators, that's why there is only
> 4 expressions).
>
> # INFO : jerems took 16.2187956328 and find 4 expressions.
> # INFO : mine took 1.33966050716 and find 4 expressions.
> # INFO : aloks took 12.9062194445 and find 0 expressions.
> # INFO : alans took 0.297864204575 and find 4 expressions.
>
> Anyways, I think we have all our own way of coding and I respect that.
>  It's always a pleasure to share with you!
> =)
> -- Jo
>
>
>
>
>
>
>
>
> 2012/7/29 Eric Thivierge <[email protected]>
>
>> Good stuff Alan. Thanks for the tip. Must not be reading the docs as
>> thoroughly as I should. :)
>>
>>
>> --------------------------------------------
>> Eric Thivierge
>> http://www.ethivierge.com
>>
>>
>> On Mon, Jul 30, 2012 at 8:33 AM, Alan Fregtman 
>> <[email protected]>wrote:
>>
>>> If you ever looked at how to parse the operator stack you must've seen
>>> the doc page for *ConstructionHistory*:
>>>
>>> http://download.autodesk.com/global/docs/softimage2012/en_us/sdkguide/index.html?url=si_om/ConstructionHistory.html,topicNumber=si_om_ConstructionHistory_html
>>>
>>> Third paragraph under Description:
>>> *"The construction history is one example of the more general concept
>>> of "Connection Stack", see 
>>> DataRepository.GetConnectionStackInfo<http://download.autodesk.com/global/docs/softimage2012/en_us/sdkguide/si_om/DataRepository.GetConnectionStackInfo.html>
>>>  for
>>> details."*
>>>
>>>
>>>
>>> On Sun, Jul 29, 2012 at 6:02 PM, Eric Thivierge <[email protected]>wrote:
>>>
>>>> Black magic! I've never even heard of that object. :(
>>>>
>>>> --------------------------------------------
>>>> Eric Thivierge
>>>> http://www.ethivierge.com
>>>>
>>>>
>>>> On Mon, Jul 30, 2012 at 7:32 AM, Alan Fregtman <[email protected]
>>>> > wrote:
>>>>
>>>>> Hey guys,
>>>>>
>>>>> *You're all forgetting the ConnectionStack.* It tells you what's
>>>>> connected under the hood. *No need to scan through all expressions in
>>>>> the scene!*
>>>>>
>>>>>
>>>>> import xml.etree.ElementTree as ET
>>>>> def getExpressionsDrivenByParameter( param ):
>>>>>     stack = XSIUtils.DataRepository.GetConnectionStackInfo(param)
>>>>>
>>>>>     expressions = XSIFactory.CreateObject('XSI.Collection')
>>>>>     xml = ET.fromstring(stack)
>>>>>     for conn in xml.findall('connection'):
>>>>>         if conn.find('type').text == 'out':
>>>>>             item = conn.find('object').text
>>>>>             if item.endswith('.Expression'):
>>>>>                 expressions.AddItems(item)
>>>>>
>>>>>     return expressions
>>>>>
>>>>>
>>>>>
>>>>> It took 4.5s on my laptop to find 10,752 expressions that were
>>>>> pointing to one single parameter. Fast enough for ya? :) -- In a less
>>>>> ludicrous use case, it's pretty much instant.
>>>>>
>>>>>    -- Alan
>>>>>
>>>>>
>>>>>
>>>>> On Sat, Jul 28, 2012 at 11:51 AM, Alok Gandhi <
>>>>> [email protected]> wrote:
>>>>>
>>>>>> Hi Jeremy,
>>>>>>
>>>>>> I missed this first time but to make it more elegant you (not a speed
>>>>>> up) you can even do:
>>>>>> def getExpressionsDrivenByParameter( param ):
>>>>>>     return PARAM_EXPR_DICT.get(param.FullName)
>>>>>>
>>>>>> which is exactly the same as before but cleaner code,
>>>>>>
>>>>>
>>>>>
>>>>
>>>
>>
>

Reply via email to