Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > comp.lang.java.programmer > #36531

Re: Generics and downcasts

Path csiph.com!aioe.org!.POSTED!not-for-mail
From Arne Vajhøj <arne@vajhoej.dk>
Newsgroups comp.lang.java.programmer
Subject Re: Generics and downcasts
Date Tue, 25 Apr 2017 16:20:59 -0400
Organization Aioe.org NNTP Server
Lines 38
Message-ID <odob39$s00$1@gioia.aioe.org> (permalink)
References <generics-20170424231405@ram.dialup.fu-berlin.de> <odoaaj$9q$1@gwaiyur.mb-net.net>
NNTP-Posting-Host PBuS014lhzVyHjLbXmo/ZQ.user.gioia.aioe.org
Mime-Version 1.0
Content-Type text/plain; charset=iso-8859-15; format=flowed
Content-Transfer-Encoding 7bit
X-Complaints-To abuse@aioe.org
User-Agent Mozilla/5.0 (Windows NT 6.1; WOW64; rv:45.0) Gecko/20100101 Thunderbird/45.8.0
X-Notice Filtered by postfilter v. 0.8.2
Xref csiph.com comp.lang.java.programmer:36531

Show key headers only | View raw


On 4/25/2017 4:07 PM, Marcel Mueller wrote:
[bunch of good stuff deleted]
> It has to pay for the concept of type erasure with compatibility to old
> code.
>
> If you dislike that, choose another language. .NET for instance has
> strong typing at IL level and does not share this impact.

.NET got generics relative early in its history, so MS decided
that compatibility with old collection classes was not that important.
Java was in a different situation, so type erasure and collection
compatibility was chosen. And we have to live with it.

> There are other pitfalls that are by far more expensive.
> E.g. if you miss to declare a trivial Java method as final. This
> prevents the JIT from inlining the method body. This may add an overhead
> of an order of magnitude or even more.

I think this is a myth.

https://www.ibm.com/developerworks/library/j-jtp1029/  (Brian Goetz 2002)

<quote>
Like many myths about Java performance, the erroneous belief that 
declaring classes or methods as final results in better performance is 
widely held but rarely examined. The argument goes that declaring a 
method or class as final means that the compiler can inline method calls 
more aggressively, because it knows that at run time this is definitely 
the version of the method that's going to be called. But this is simply 
not true. Just because class X is compiled against final class Y doesn't 
mean that the same version of class Y will be loaded at run time. So the 
compiler cannot inline such cross-class method calls safely, final or 
not. Only if a method is private can the compiler inline it freely, and 
in that case, the final keyword would be redundant.
</quote>

Arne

Back to comp.lang.java.programmer | Previous | Next — Previous in thread | Next in thread | Find similar | Unroll thread


Thread

Re: Generics and downcasts Marcel Mueller <news.5.maazl@spamgourmet.org> - 2017-04-25 22:07 +0200
  Re: Generics and downcasts Arne Vajhøj <arne@vajhoej.dk> - 2017-04-25 16:20 -0400
    Re: Generics and downcasts Eric Douglas <e.d.programmer@gmail.com> - 2017-04-25 13:35 -0700
      Re: Generics and downcasts Arne Vajhøj <arne@vajhoej.dk> - 2017-04-25 19:54 -0400
    Re: Generics and downcasts Marcel Mueller <news.5.maazl@spamgourmet.org> - 2017-04-25 22:40 +0200
      Re: Generics and downcasts Eric Sosman <esosman@comcast-dot-net.invalid> - 2017-04-25 18:13 -0400
      Re: Generics and downcasts Arne Vajhøj <arne@vajhoej.dk> - 2017-04-25 19:53 -0400

csiph-web