trivial patch to reduce allocations in nio open* methods

Michael Skells mike.skells1 at gmail.com
Tue Mar 13 00:01:20 UTC 2018


Hi,
I am not sure what the status is for this patch

Are you waiting for more input, or some update from me?
Is this a viable patch?
Is it just in the queue of minor noise to consider later?

Regards
Mike

From: Michael Skells
Sent: 06 March 2018 22:00
To: Alan Bateman
Cc: Chris Hegarty; nio-dev
Subject: Re: trivial patch to reduce allocations in nio open* methods

Hi Remi,
the code in FileSystemProvider does not add to the immutable set, if we are talking about the same method - the add of the WRITE only occurs in the case where options are specified, and is pre-populated in the default case.

public OutputStream newOutputStream(Path path, OpenOption... options)
    throws IOException
{
    int len = options.length;
    Set<OpenOption> opts ;
    if (len == 0) {
        opts = DEFAULT_OPEN_OPTIONS;
    } else {
        opts = new HashSet<>(len + 1);
        for (OpenOption opt: options) {
            if (opt == StandardOpenOption.READ)
                throw new IllegalArgumentException("READ not allowed");
            opts.add(opt);
        }
        opts.add(StandardOpenOption.WRITE);
    }
    return Channels.newOutputStream(newByteChannel(path, opts));
}
 Files.createFile() - The usage that I was interested in is the new input or output streams - I just looked through the other methods that had similar patterns
What is the next step - are you looking for me to do any rework?
I dont have the ability to validate performance in the different platforms, other than allocation (which is where I came in) 
Regards
Mike


On Tue, 6 Mar 2018 at 19:05 Alan Bateman <Alan.Bateman at oracle.com> wrote:
On 06/03/2018 18:34, Chris Hegarty wrote:
>
> It seems crummy, but using Set.of will require some care when
> handling duplicate options. The code currently silently ignores
> duplicates, if I'm not mistaken.
I just read Rémi's mail now. So yes, it could only use Set.of for
options.length < 2.

-Alan

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.openjdk.java.net/pipermail/nio-dev/attachments/20180313/944e6988/attachment.html>


More information about the nio-dev mailing list