RFR: 8224202: Speed up Properties.load
claes.redestad at oracle.com
Wed May 22 22:19:35 UTC 2019
On 2019-05-22 20:09, Roger Riggs wrote:
> Hi Claes,
> Properties.java: 542-547, 636-639 you might find the function Ivan added
> newlen = ArraySupport.newLength(oldlength, min, preferred);
good suggestion - this is a slow path that we don't hit in any of the
startup tests I'm concerned with, so let's use that.
> Can it be refactored differently to read the bytes into a char array and
> then process that to avoid the processing code duplication.
.. not without a slowdown.
> If not, can you put the two byte and char versions of readLine in
> separate methods,
> That massive if..else is ugly. Not sharing most of the code doing the
> same things is quite ugly too.
... let's take a step back from that particular ugliness. :-)
- Joined stream/reader code paths back together
- Consume comment lines completely - reading new data from
stream/reader if we need to - removes the need for the
isCommentLine control variable
- Realized isNewLine is true iff len == 0, so it can be removed
This ends up being almost exactly as fast as open.01, with much
less code duplication. The break-to-label is unfortunate, of course.
More information about the core-libs-dev