On Thu, 17 Oct 2024 22:41:02 GMT, wasif kirmani <d...@openjdk.org> wrote:

>> [JDK-8342513](https://bugs.openjdk.org/browse/JDK-8342513) : Autoboxing 
>> Overhead & Inefficient Parallel Processing
>
>> [xxDark](/xxDark)
> 
> Quite an allegation. Well, I initially wrote it for IntStraem and as I 
> mentioned the performance change I found and it was working fine. But, yes I 
> couldn't check it thoroughly which was my bad.

> @kirmaniwasif
> 
> > The issue raised was not about the primitive streams performing unnecessary 
> > boxing, but rather about efficiently handling larger streams with more 
> > complex operations (e.g., filtering large datasets).
> 
> Wouldn't, as a user, adding `parallel()` to the stream do the exact same 
> thing (but the user would still remain in control of whether the stream is 
> parallel or sequential)?
> 
> > I verified the filter by implementing time changes with IntStream and found 
> > out that:
> > long startTime = System.nanoTime();
> > long count = optimizedIntStream(IntStream.range(0, 1_000_000))
> > .filter(n -> n % 2 == 0)
> > .count();
> > long endTime = System.nanoTime();
> 
> The above kind of performance benchmarking is highly likely to give you the 
> wrong impression (there are a lot of concerns you'll have to handle in order 
> to arrive at a benchmark setup which will produce reliable results)—you'll 
> have to create (or reuse an existing) JMH-based benchmark. Also, only testing 
> a single stream length (which also happens to have a known length) is not 
> going to paint a complete picture, so you're going to have to test different 
> stream lengths ranging from 0 to millions both with streams of known lengths 
> and unknown lengths. Also, only testing a single intermediate operation might 
> obscure the fact that a change can have adverse effects when combined with 
> other operations, so you're going to have to bench a bunch of combinations of 
> operations to make sure that the change doesn't have unintended performance 
> consequences.
> 
> What I'd recommend you doing is first verify the claims: is auto-boxing 
> happening, and if so where. Then the next step is to check if it is possible 
> to fix that auto-boxing locally (since the primitive streams try very hard to 
> avoid boxing).
> 
> From experience, it is vital run the tests after each change (even before 
> running the benchmarks).
> 
> Please see https://openjdk.org/contribute/ for further information on 
> contributing to OpenJDK.
> 
> Cheers, √

Thank you for the response. I have closed this PR. But, will keep an eye in 
future

-------------

PR Comment: https://git.openjdk.org/jdk/pull/21566#issuecomment-2422085704

Reply via email to