[IronPython] Speed test

JoeSox joesox at gmail.com
Thu Apr 20 00:26:48 CEST 2006


On 4/19/06, Dino Viehland <dinov at exchange.microsoft.com> wrote:
> If in initializeDB you comment out:
>
>
> ipEngine1.SetVariable("pred_file", predfile);                                    ipEngine1.Execute(@"db.load_predicates_file(pred_file)");
>
> does it get much faster?

Yes, I received a time of 00:00:00.0156250

> If it doesn't then the problem is squarely an IronPython problem and we'll need to investigate further.
>
> The more static one has some issues...  The GetObjectArray() call will be really expensive if your edges grow to be very big (it'll copy the array).  Maybe that's what you need to do here though (and it looks like edge just grows unbounded as it never gets cleared).
>

Yes, in Python there are a couple of variable objects like "fw_edges"
that grow into "<huge dict 0x12ad810>" etc (but to me they resemble
more like IronPython List object).

> You also might be able to get rid of the Ops.GetEnumerator call for the Tuple, not that that should be very expensive though.
>
> NodesCollection is a StringCollection?

Yes.

> Also, are you taking your performance measurements at the console, or in an imported py file?

Recently, I have been using an imported py file.  I am about to start
testing using the console.  I have been using a custom Progressbar
Form to notify the user of what was happening but I might try using a
console for the same concept to see if it is any faster.


> In general our performance is much better in imported files than it is at the console.
>

This is good to know but not always ideal.  I am trying to write a
Class Library to so any app can use it.

--
Joseph



More information about the Ironpython-users mailing list