My guess would be that we're pushing the PythonContext._callSplatSite outside 
of the sweet spot in DLR site caches.

You could check this by putting a breakpoint in PythonContext.Call(object, 
params object[]).  Then look and see if _callSplatSite._rules is an instance of 
EmptyRuleSet<T> with _supportAdding == false.

If this is the cause it should be pretty easy to fix - property's should 
probably get their own call site object so it'll be specialized to the specific 
property (maybe we could share a common one of the function is a PythonFunction 
as these generate highly shareable calls between multiple function instances).  
We're also doing a params call today which we could stop doing and get a nice 
perf boost on properties.

> -----Original Message-----
> From: users-boun...@lists.ironpython.com [mailto:users-
> boun...@lists.ironpython.com] On Behalf Of Kamil Dworakowski
> Sent: Tuesday, December 16, 2008 11:08 AM
> To: users@lists.ironpython.com
> Subject: [IronPython] weird performance issue
>
> We see a very strange side effect of running the follwing code on the
> performance of recalculations in Resolver One.
>
> def Dumbcorator(fn):
>     def _inner(self, *args):
>         return fn(self, *args)
>     return _inner
>
> class Locker(object):
>     @property
>     @Dumbcorator
>     def thing(self):
>         return 2
>
> l = Locker()
> l.thing
>
> Specifically, one of the performance test reports results 4 to 8 times
> worse with this snippet in than without (the clock is turned on after
> this snippet executes). If I comment out this snippet from the code,
> it suddenly runs 4 to 8 times faster. The fact that I can comment it
> out means that it is not used in the test, so it is bizzare that it
> slows it down.
>
> We can't reproduce the slow down in a clean example though. I hope
> something clicks for somebody and gives me a hint as to what is going
> on. Tomorrow I'll continue on trying to minimize the code that is
> being slowed down, and hopefully come up with some decent repro.
> _______________________________________________
> Users mailing list
> Users@lists.ironpython.com
> http://lists.ironpython.com/listinfo.cgi/users-ironpython.com
_______________________________________________
Users mailing list
Users@lists.ironpython.com
http://lists.ironpython.com/listinfo.cgi/users-ironpython.com

Reply via email to