Very simple python functions takes spends long time in function and not subfunctions

Posted by John Salvatier on Stack Overflow See other posts from Stack Overflow or by John Salvatier
Published on 2010-06-06T23:37:09Z Indexed on 2010/06/06 23:42 UTC
Read the original article Hit count: 201

Filed under:
|

I have spent many hours trying to figure what is going on here.

The function 'grad_logp' in the code below is called many times in my program, and cProfile and runsnakerun the visualize the results reveals that the function grad_logp spends about .00004s 'locally' every call not in any functions it calls and the function 'n' spends about .00006s locally every call. Together these two times make up about 30% of program time that I care about. It doesn't seem like this is function overhead as other python functions spend far less time 'locally' and merging 'grad_logp' and 'n' does not make my program faster, but the operations that these two functions do seem rather trivial. Does anyone have any suggestions on what might be happening?

Have I done something obviously inefficient? Am I misunderstanding how cProfile works?

def grad_logp(self, variable, calculation_set ):

    p = params(self.p,self.parents)

    return self.n(variable, self.p)

def n (self, variable, p ):
    gradient = self.gg(variable, p)

    return np.reshape(gradient, np.shape(variable.value))
def gg(self, variable, p):
    if variable is self:

        gradient = self._grad_logps['x']( x = self.value,  **p)
    else:
        gradient = __builtin__.sum([self._pgradient(variable, parameter, value, p) for parameter, value in self.parents.iteritems()])

    return gradient

© Stack Overflow or respective owner

Related posts about python

Related posts about Performance