Hi Cory, On Mon, Aug 2, 2010 at 12:41 PM, Cory Brostowicz <cory.brostow...@gmail.com> wrote: > Hello, > I noticed the performance in one of my python scripts has really bad > performance, so I started profiling different sections of the script to find > out where the issue is. It turns out, the exception handle seems to add > the biggest chunk of time.
IronPython 2.6 and earlier rely on the .NET exception mechanism. .NET's exception handling is extremely slow, whereas CPython has an extremely fast exception handling system. I don't know the details of why each is the way it is, though - engineering tradeoffs, I guess. IronPython 2.7 will have a 'lightweight' exception mechanism that should be closer to the performance of CPython. > I've fairly new to the Python language, so if > there is a better way to do what I'm doing, then please let me know. Unfortunately, I think that's pretty much idiomatic Python, which often relies on it's very fast exception handling. In .NET you use the Try* methods instead, which don't throw exceptions. If you don't need CPython compatibility, you could use System.Double.TryParse (http://msdn.microsoft.com/en-us/library/994c0zb1.aspx), but I don't know how to use out parameters from IronPython off the top of my head. On an unrelated note, you can write your print statement as: print "Total: %s RateGet: %s RateSets: %s Exception Handle: %s Rate: %s" % (t.Elapsed.TotalMilliseconds, rateGet, rateSet, e.Elapsed.TotalMilliseconds, Rate) - Jeff _______________________________________________ Users mailing list Users@lists.ironpython.com http://lists.ironpython.com/listinfo.cgi/users-ironpython.com