On Mon, 29 Apr 2024 17:45:55 GMT, Mandy Chung <[email protected]> wrote:
> The changes look good to me but I wonder if the non-zero length check before
> calling `arraycopy` really needed? That seems to add some noise to the code.
I recall benchmarking similar code in `MethodType` extensively, and found that
it had a small but significant impact, especially when adding or dropping
parameters at the end or beginning of an argument list (which is the most
common case). Adhoc JMH:
@Benchmark
public MethodTypeDesc dropFirstParameter() {
return desc.dropParameterTypes(0, 1);
}
Name
(descString) Cnt Base Error Test Error Unit Change
MethodTypeDescFactories.dropFirstParameter
(Ljava/lang/Object;Ljava/lang/String;)I 6 20,382 ± 0,635 16,116 ± 0,737
ns/op 1,26x (p = 0,000*)
MethodTypeDescFactories.dropFirstParameter
([IJLjava/lang/String;Z)Ljava/util/List; 6 26,875 ± 0,652 19,863 ± 0,749
ns/op 1,35x (p = 0,000*)
MethodTypeDescFactories.dropFirstParameter
(..IIJ)V 6 29,774 ± 0,983 20,747 ± 1,181 ns/op 1,44x (p = 0,000*)
MethodTypeDescFactories.dropFirstParameter
(.....................). 6 33,224 ± 0,939 30,350 ± 1,739 ns/op 1,09x (p =
0,000*)
* = significant
-------------
PR Comment: https://git.openjdk.org/jdk/pull/18991#issuecomment-2083446959