rdale at foton.es
Wed Mar 21 17:13:06 UTC 2007
On Wednesday 21 March 2007, Arno Rehn wrote:
> Am Mittwoch, 21. März 2007 schrieb Arno Rehn:
> > Am Mittwoch, 21. März 2007 schrieb Richard Dale:
> > > I think it would be quicker and easier to special case these methods on
> > > the C/C++ side. Then we would probably only need to do a string
> > > comparison on the method name, and rearranging the smoke stack is
> > > easier there too.
> > Yes, you're right. But I wonder why it causes such a high overhead by
> > doing this in C#. Once it is compiled by the JIT it should work rather
> > fast, shouldn't it?
> Just did it in C++ again and now it doesn't create any additional overhead
> in your 't14 performance check' anymore. It's just the same as without
> additional code for instance operators. Patch attached.
Yes, that looks pretty good to me - lets commit it. Also it will work with all
types of argument which the C# version didn't.
I repeated a test with the command 'time mono t14.exe' and did five shots at
force 40 and got these results:
With no 'IsInstanceOperator':
With 5 calls of 'IsInstanceOperator':
So the overhead with this measurement is more like 10% per IsInstanceOperator
call. I have a 1.8 Ghz dual core MacBook, and it's pretty amazing that
tracking the the shot and redrawing a simple game is taking 20% of powerful
processors. It's really too early to start optimizing Qyoto until it's
feature complete (which it nearly is), but it's quite important to not make
it any worse than it already is.
The cannon game seems as good a test as anything else. It also leaks memory,
and I wonder if it's worth adding debug logging for the GCHandle alloc and
free calls as I suspect they're not all being freed.
More information about the Kde-bindings