From bf133c89832cd63cddb9d28269068903c31748b3 Mon Sep 17 00:00:00 2001 From: Josh Rosen Date: Fri, 31 May 2024 14:49:43 -0700 Subject: [PATCH] Compile patterns. --- .../org/apache/spark/network/util/JavaUtils.java | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/common/utils/src/main/java/org/apache/spark/network/util/JavaUtils.java b/common/utils/src/main/java/org/apache/spark/network/util/JavaUtils.java index 8e1cc470e0ccf..303fd2c0ee414 100644 --- a/common/utils/src/main/java/org/apache/spark/network/util/JavaUtils.java +++ b/common/utils/src/main/java/org/apache/spark/network/util/JavaUtils.java @@ -228,6 +228,8 @@ private static boolean isSymlink(File file) throws IOException { Map.entry("pb", ByteUnit.PiB)); } + private static final Pattern TIME_STRING_PATTERN = Pattern.compile("(-?[0-9]+)([a-z]+)?"); + /** * Convert a passed time string (e.g. 50s, 100ms, or 250us) to a time count in the given unit. * The unit is also considered the default if the given string does not specify a unit. @@ -236,7 +238,7 @@ public static long timeStringAs(String str, TimeUnit unit) { String lower = str.toLowerCase(Locale.ROOT).trim(); try { - Matcher m = Pattern.compile("(-?[0-9]+)([a-z]+)?").matcher(lower); + Matcher m = TIME_STRING_PATTERN.matcher(lower); if (!m.matches()) { throw new NumberFormatException("Failed to parse time string: " + str); } @@ -276,6 +278,11 @@ public static long timeStringAsSec(String str) { return timeStringAs(str, TimeUnit.SECONDS); } + private static final Pattern BYTE_STRING_PATTERN = + Pattern.compile("([0-9]+)([a-z]+)?"); + private static final Pattern BYTE_STRING_FRACTION_PATTERN = + Pattern.compile("([0-9]+\\.[0-9]+)([a-z]+)?"); + /** * Convert a passed byte string (e.g. 50b, 100kb, or 250mb) to the given. If no suffix is * provided, a direct conversion to the provided unit is attempted. @@ -284,8 +291,8 @@ public static long byteStringAs(String str, ByteUnit unit) { String lower = str.toLowerCase(Locale.ROOT).trim(); try { - Matcher m = Pattern.compile("([0-9]+)([a-z]+)?").matcher(lower); - Matcher fractionMatcher = Pattern.compile("([0-9]+\\.[0-9]+)([a-z]+)?").matcher(lower); + Matcher m = BYTE_STRING_PATTERN.matcher(lower); + Matcher fractionMatcher = BYTE_STRING_FRACTION_PATTERN.matcher(lower); if (m.matches()) { long val = Long.parseLong(m.group(1));