Skip to content

Commit d49da73

Browse files
Refactor RFC 1123 and UTC offset format benchmarks to use inline format construction.
1 parent 61db0a9 commit d49da73

File tree

1 file changed

+48
-10
lines changed

1 file changed

+48
-10
lines changed

benchmarks/src/jmh/kotlin/CommonFormats.kt

Lines changed: 48 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -7,14 +7,7 @@
77

88
package kotlinx.datetime
99

10-
import kotlinx.datetime.format.DateTimeComponents
11-
import kotlinx.datetime.format.DayOfWeekNames
12-
import kotlinx.datetime.format.ISO_DATE
13-
import kotlinx.datetime.format.MonthNames
14-
import kotlinx.datetime.format.Padding
15-
import kotlinx.datetime.format.alternativeParsing
16-
import kotlinx.datetime.format.char
17-
import kotlinx.datetime.format.optional
10+
import kotlinx.datetime.format.*
1811
import org.openjdk.jmh.annotations.*
1912
import org.openjdk.jmh.infra.Blackhole
2013
import java.util.concurrent.*
@@ -90,7 +83,40 @@ open class CommonFormats {
9083

9184
@Benchmark
9285
fun buildRfc1123DateTimeFormat(blackhole: Blackhole) {
93-
val format = DateTimeComponents.Formats.RFC_1123
86+
val format = DateTimeComponents.Format {
87+
alternativeParsing({
88+
// the day of week may be missing
89+
}) {
90+
dayOfWeek(DayOfWeekNames.ENGLISH_ABBREVIATED)
91+
chars(", ")
92+
}
93+
day(Padding.NONE)
94+
char(' ')
95+
monthName(MonthNames.ENGLISH_ABBREVIATED)
96+
char(' ')
97+
year()
98+
char(' ')
99+
hour()
100+
char(':')
101+
minute()
102+
optional {
103+
char(':')
104+
second()
105+
}
106+
chars(" ")
107+
alternativeParsing({
108+
chars("UT")
109+
}, {
110+
chars("Z")
111+
}) {
112+
optional("GMT") {
113+
offset(UtcOffset.Format {
114+
offsetHours()
115+
offsetMinutesOfHour()
116+
})
117+
}
118+
}
119+
}
94120
blackhole.consume(format)
95121
}
96122

@@ -121,7 +147,19 @@ open class CommonFormats {
121147
alternativeParsing({
122148
offsetHours()
123149
}) {
124-
offset(UtcOffset.Formats.ISO)
150+
offset(UtcOffset.Format {
151+
alternativeParsing({ chars("z") }) {
152+
optional("Z") {
153+
offsetHours()
154+
char(':')
155+
offsetMinutesOfHour()
156+
optional {
157+
char(':')
158+
offsetSecondsOfMinute()
159+
}
160+
}
161+
}
162+
})
125163
}
126164
}
127165
blackhole.consume(format)

0 commit comments

Comments
 (0)