Optimising the core
Charles Goodwin <[email protected]> Thu, 25 Mar 2004 11:06:31 +0000
| Newsgroups | gmane.comp.java.xwt.core |
|---|---|
| Organization | XWT Foundation |
| Message-ID | <[email protected]> |
It would be nice to have a list of things we can do to start optimising
the Ibex core. I'm sure it can be made substantially faster, as good as
it is now. ;)
My following suggestion feels a little weak, so good suggestions are
welcome and I'd be happy to take a look at following them through
(provided I don't need to be a rocket scientist to do so as I'm not much
good with rockets).
The first thing that struck me as perhaps a little inefficient was this:
// static stuff so we don't have to keep reallocating
private static int[] numRowsInCol = new int[65535];
private static LENGTH[] colWidth = new LENGTH[65535];
private static LENGTH[] colMaxWidth = new LENGTH[65535];
private static LENGTH[] rowHeight = new LENGTH[65535];
private static LENGTH[] rowMaxHeight = new LENGTH[65535];
static { for(int i=0; i<rowMaxHeight.length; i++)
{ rowMaxHeight[i] = 0; colMaxWidth[i] = 0; } }
Questions:
1) Does GCJ optimise the arrays that are empty to keep them small or
does it allocate memory for them? Bearing in mind that there are
thousands of boxes initialised, 5 x 65k-large arrays being reduced will
significantly save on memory. Right?
2) Would it not be quicker and more efficient to fill rowMaxHeight[] and
colMaxWidth dynamically as-required? Or does GCJ 'remember'
instantiated classes so it only ever fills the arrays once? If not,
then for boxes who never have more than a few children (ie the vast
majority) we'd not be stepping through the entire 65k array each time.
--
- Charlie
Charles Goodwin <[email protected]>
Online @ http://www.charlietech.com