This is the mail archive of the java-discuss@sourceware.cygnus.com mailing list for the Java project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]

Re: ReRe: performance (shellsort experiments)


Norman Hendrich <hendrich@tech.informatik.uni-hamburg.de> writes:

> Interesting! I have often wondered how much runtime overhead the
> 'generic type' approach to data structures in Java really implied.
> I would never have guessed a factor of almost four, however.
> Seems that C++-style templates are worth-while after all...

With a dynamic compiler that does code-specialization, mosts of such
casts can be eliminated.  

In context of static compilation, I expect that we could get a
significant win by just adding a mono-morphic inline cache.  That is,
for each expression at the form 

   x = (Foo)y

we'd generate code like:

  static _Jv_VTable* __tmp = 0;
  if (y->vtable != __tmp)
    {
       _Jv_CheckArrayStore (y, Foo.class); // may throw exc
       __tmp = y->vtable;
    }
  x = y;   
  
Experiments with Self/Smalltalk in context of dynamic method
dispatch have shown that this kind of thing improves performance
dramatically, since most call sites are in fact mono-morphic.  My bet
is, that this is also the case for most type-cast operations.

This would of cause require compiler changes.

On top of this, we can improve the performace of isAssignambleFrom;
but I thing the most significant single thing one could do right now
would be to implement uniquing for Utf8Const's, both in the linker and
in the runtime system.

-- Kresten

 Kresten Krab Thorup           "I like my eggs ploded"
 Department of Computer Science, University of Aarhus
 Aabogade 34, DK-8200 Aarhus N, Denmark
 +45 8942 5665 (office), +45 2343 4626 (mobile)

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]