|
From: Roger H. <rog...@mi...> - 2004-04-26 11:43:27
|
On Sunday, April 25, 2004, at 12:13 am, James W. Walker wrote: > How much of an improvement are you seeing? It is difficult for me to separate that optimisation from the others I have done. My e-mails back in September talk of gains from 11% less time up to double the speed in GeomTest, and that was not the end of the work I did. One of the changes is now checked in and I am awaiting approval for the others. The most important methods seems to be creation and deletion of objects, even when the object is still referenced, scanning down the class structure to the root object data (dispose is a method of root) takes a lot of time in the cvs version. Allocating all the instance data for each level of an objects parent classes was another thing I improved from the cvs - I now just do one allocation and all the data lives in the one block of RAM. This may also give less problems with cache misses as all the data is in consecutive locations. This of course also save time when the object gets deleted and helps with memory fragmentation. The downside is that the structs have to be moved from the E3xxxx.c to the E3xxxx.h files, though of course they are still not in the SDK's Q3xxxx.h files. > > I tried a simple approach of storing a few of the most heavily-used > methods in the E3ClassInfo record. This change improved the multibox > frame rate by 6% or so, and the changes are confined to E3ClassTree.c. With the method tables, my implementation has to start at root and works towards the leaf classes. I have no done everything yet so I would be interested to know which methods you found were important. I could then do any I have not already done. Roger. |