Glad to help :)

On 27/07/2012 7:22 PM, Jeremie Passerin wrote:
Okay you are my hero Alok !
with your approach looping 10 times on this function went from 1min5sec to 6sec !

thanks a lot !


On 27 July 2012 16:09, Jeremie Passerin <[email protected]> wrote:
Thanks Matt !

Interesting solution Alok, my issue is not the 2sec that it takes to perform the seach but that I am looping on this method about 20 times... so it makes sense to try something like that ! I'll give it a try right now !


On 27 July 2012 15:54, Alok <[email protected]> wrote:
Maybe globally store the expressions with their params in a hash (dictionary in Python) and then do the reverse look up. Will not run faster but will save you time for each call to getExpressionsDrivenByParameter()

In this case:
PARAM_EXPR_DICT = {}
for expr in Application.FindObjects(None, "{12723EB2-7DDB-11D0-A57F-00A0C91412DE}"):
    ports =
expr.InputPorts
    if not ports.Count:
        continue
    for port in in ports :
        paramName = port.Target2.FullName
        if not PARAM_EXPR_DICT.has_key(paramName): PARAM_EXPR_DICT[paramName] = []
        PARAM_EXPR_DICT[paramName].append(expr)
        
        
Then you can test it for parameter simply by:
def getExpressionsDrivenByParameter( param ):
    return (PARAM_EXPR_DICT[param.FullName] if PARAM_EXPR_DICT.has_key(param.Name) else None)




Alok.

On 27/07/2012 5:44 PM, Jeremie Passerin wrote:
Hi guys, 

I was wondering what is your technique to get all the expressions driven by a parameter. 
I'm trying to find the fastest way to do it. 
here is my code : 

def getExpressionsDrivenByParameter( param ):

allExpressions = xsi.FindObjects(None, "{12723EB2-7DDB-11D0-A57F-00A0C91412DE}")
result = []
for exp in allExpressions:
for port in exp.InputPorts:
if port.Target2.IsEqualTo(param) and exp.OutputPorts.Count:
result.append(exp)
break
return result

With around 5000 expressions in my scene it takes about 2sec to get the result. Anyone got a faster solution ? 

cheers, 
Jeremie

No virus found in this message.
Checked by AVG - www.avg.com
Version: 2012.0.2197 / Virus Database: 2437/5158 - Release Date: 07/27/12




No virus found in this message.
Checked by AVG - www.avg.com
Version: 2012.0.2197 / Virus Database: 2437/5158 - Release Date: 07/27/12


Reply via email to