Is V? what we need ?

Doug Lea dl at cs.oswego.edu
Wed May 1 14:32:18 UTC 2019


On 5/1/19 10:12 AM, Brian Goetz wrote:
> 
> You’re assuming the utility of V? after reification is zero, but
> that’s not the case. For example, suppose ArrayList is reified.  Then
> the user gets the choice of erasure or reification by selecting
> ArrayList<V?> or ArrayList<V>. Erasure has a bad rap, but sometimes
> it is desirable.

As I tried but failed to get across in post on sorting, choosing V vs V?
can lead to 5X cost differences in *either direction* for common
aggregate (collection and array) operations. So programmers will need to
learn some of these consequences. (Which is made harder/worse here
because the cost tradeoffs will probably change over time as VM support
improves.)

Which is mainly an argument for Brian's position, except for those who
believe that Java programmers should not have to encounter these kinds
of issues that C++, C#, OCAML, etc programmers face all the time;
betting that somehow VMs will make the right choice.

(Maybe this is not the right time to mention this, but most other
languages supporting this range of use have a middle-ground of
call-by-ref for extracting small parts of large things, as seen in
comparators, hash-codes, etc that can make a big performance difference.
I expect people will complain about not supporting this.)

-Doug





More information about the valhalla-spec-experts mailing list