I took a look and we're spending most of our time doing old instance/old class accesses. If they used new-style classes it would probably run faster - although CPython might as well :) It seems like a good chunk of that is coming from __eq__/__cmp__ on the old-style classes - and w/ new-style classes we can make that really fast.
There's definitely some fat that can be trimmed here though - we currently have an extra layer of indirection when looking up the class vars which is just legacy of the DLR changing under us in interesting ways. We could also look at specifically tuning old class dictionaries - currently we only have a special dict for old instances dictionaries. But I suspect we'll look at tuning new-style classes more first. One possible thing which could be hitting Mono would be the use of our Dictionary<SymbolId, object>. That relies on having IEquatable<SymbolId> working well. But maybe not, I just say that because we hit those dictionaries a lot. -----Original Message----- From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] On Behalf Of Seo Sanghyeon Sent: Sunday, October 05, 2008 12:21 AM To: Discussion of IronPython Subject: [IronPython] Yield Prolog Benchmarks Yield Prolog is an embeddable Prolog implementation that compiles to Python, C#, or JavaScript using "yield" statements in those languages. http://yieldprolog.sourceforge.net/ It comes with a nice benchmark calculating 2680 solutions of 11-queens problem in Prolog. So I tried it out of curiosity. http://yieldprolog.sourceforge.net/benchmarks.html How to run: svn co https://yieldprolog.svn.sourceforge.net/svnroot/yieldprolog/YieldProlog yieldprolog cd yieldprolog/source/python # Edit Compiler.py to comment out "from compiler import *". It is not needed. cd examples/Benchmarks python queens.py Intel Core 2 T7200 2.00GHz 2.00GB RAM Microsoft Windows XP Home Edition SP2 Python 2.5.1 36.2195480152 36.3135356589 36.0008464763 IronPython 2.0 Beta 5 on .NET Framework 3.5 SP1 52.5789892291 53.0868051666 53.0352047537 In this particular benchmark, IronPython 2 comes about 30% slower than Python 2.5. Mono is much, much slower than .NET for this particular benchmark, by the way. I am investigating. -- Seo Sanghyeon _______________________________________________ Users mailing list [email protected] http://lists.ironpython.com/listinfo.cgi/users-ironpython.com _______________________________________________ Users mailing list [email protected] http://lists.ironpython.com/listinfo.cgi/users-ironpython.com
