[IronPython] weird performance issue

Dino Viehland dinov at microsoft.com
Wed Dec 17 04:21:17 CET 2008

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-bounces at lists.ironpython.com [mailto:users-
> bounces at lists.ironpython.com] On Behalf Of Kamil Dworakowski
> Sent: Tuesday, December 16, 2008 11:08 AM
> To: users at 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 at lists.ironpython.com
> http://lists.ironpython.com/listinfo.cgi/users-ironpython.com

More information about the Ironpython-users mailing list