RFR: JDK-8293776 : Adds CSS 4 and 8 digits hex coded Color [v4]
ScientificWare
duke at openjdk.org
Sun Sep 25 00:31:28 UTC 2022
On Sat, 24 Sep 2022 12:29:18 GMT, ScientificWare <duke at openjdk.org> wrote:
>> src/java.desktop/share/classes/javax/swing/text/html/CSS.java line 1404:
>>
>>> 1402: } else if (n != 8 || !hex.matcher(digits).matches()) {
>>> 1403: return null;
>>> 1404: }
>>
>> Using `charAt` avoids creating temporary strings of length `1`.
>>
>> Also, using the `%[argument_index$]conversion` format specifier form allows halving the lengths of the vararg arrays.
>> Suggestion:
>>
>> if (n == 3 && hex.matcher(digits).matches()) {
>> final char r = digits.charAt(0);
>> final char g = digits.charAt(1);
>> final char b = digits.charAt(2);
>> digits = String.format("%1$s%1$s%2$s%2$s%3$s%3$sff", r, g, b);
>> } else if (n == 4 && hex.matcher(digits).matches()) {
>> final char r = digits.charAt(0);
>> final char g = digits.charAt(1);
>> final char b = digits.charAt(2);
>> final char a = digits.charAt(3);
>> digits = String.format("%1$s%1$s%2$s%2$s%3$s%3$s%4$s%4$s", r, g, b, a);
>> } else if (n == 6 && hex.matcher(digits).matches()) {
>> digits += "ff";
>> } else if (n != 8 || !hex.matcher(digits).matches()) {
>> return null;
>> }
>
> @ExE-Boss After a quick performance test, I note that `%1$s%1$s%2$s%2$s%3$s%3$s%4$s%4$s` usage multiplies time execution at least by 4.
>
> I'm going to test if there is other solutions than %n$s or %s. First of all by using a simple concatenation.
If allowed `digits = "" + r + r + g + g + b + b + a + a` would be a good candidate.
-------------
PR: https://git.openjdk.org/jdk/pull/10317
More information about the client-libs-dev
mailing list