Skip to content

Commit 7f30024

Browse files
java-team-github-botGoogle Java Core Libraries
authored and
Google Java Core Libraries
committed
ToStringHelper: omitEmptyValues() - Benchmark updates
PiperOrigin-RevId: 360760353
1 parent b109664 commit 7f30024

File tree

2 files changed

+192
-30
lines changed

2 files changed

+192
-30
lines changed

android/guava-tests/benchmark/com/google/common/base/ToStringHelperBenchmark.java

+96-15
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,8 @@
1818

1919
import com.google.caliper.Benchmark;
2020
import com.google.caliper.Param;
21+
import java.util.Arrays;
22+
import java.util.Collections;
2123

2224
/**
2325
* Some microbenchmarks for the {@link MoreObjects.ToStringHelper} class.
@@ -26,30 +28,109 @@
2628
*/
2729
public class ToStringHelperBenchmark {
2830

29-
@Param({"0", "2", "5", "10"})
31+
@Param({"0", "1", "5"})
3032
int dataSize;
3133

32-
private static final String NAME = "abcdefgh";
33-
private static final String NAME3 = Strings.repeat(NAME, 3);
34-
35-
private static void addEntries(MoreObjects.ToStringHelper helper) {
36-
helper
37-
.add(NAME, 10)
38-
.addValue(10L)
39-
.add(NAME, 3.14f)
40-
.addValue(3.14d)
41-
.add(NAME3, false)
42-
.add(NAME3, NAME3)
43-
.add(NAME3, 'x');
34+
@Param({"false", "true"})
35+
boolean omitNulls;
36+
37+
enum Dataset {
38+
SMALL {
39+
void addEntries(MoreObjects.ToStringHelper helper) {
40+
helper
41+
.add(SHORT_NAME, 10)
42+
.addValue(10L)
43+
.add(SHORT_NAME, 3.14f)
44+
.addValue(3.14d)
45+
.add(LONG_NAME, false)
46+
.add(LONG_NAME, LONG_NAME);
47+
}
48+
},
49+
CONDITIONAL {
50+
void addEntries(MoreObjects.ToStringHelper helper) {
51+
helper
52+
.add(SHORT_NAME, "x")
53+
.add(LONG_NAME, "y")
54+
.add(SHORT_NAME, null)
55+
.add(LONG_NAME, null)
56+
.addValue("z")
57+
.addValue("")
58+
.addValue(null)
59+
.add(SHORT_NAME, Arrays.asList("A"))
60+
.add(LONG_NAME, Arrays.asList("B"))
61+
.add(SHORT_NAME, Arrays.asList())
62+
.add(LONG_NAME, Arrays.asList())
63+
.addValue(Arrays.asList("C"))
64+
.addValue(Arrays.asList())
65+
.add(SHORT_NAME, Collections.singletonMap("k1", "v1"))
66+
.add(LONG_NAME, Collections.singletonMap("k2", "v2"))
67+
.addValue(Collections.singletonMap("k3", "v3"))
68+
.addValue(Collections.emptyMap())
69+
.addValue(null)
70+
.add(SHORT_NAME, Optional.of("1"))
71+
.add(LONG_NAME, Optional.of("1"))
72+
.add(SHORT_NAME, Optional.absent())
73+
.add(LONG_NAME, Optional.absent())
74+
.add(SHORT_NAME, Optional.of("2"))
75+
.add(SHORT_NAME, Optional.absent())
76+
.addValue(null)
77+
.add(SHORT_NAME, new int[] {1})
78+
.add(LONG_NAME, new int[] {2})
79+
.addValue(new int[] {3})
80+
.addValue(new int[] {})
81+
.addValue(null);
82+
}
83+
},
84+
UNCONDITIONAL {
85+
void addEntries(MoreObjects.ToStringHelper helper) {
86+
helper
87+
.add(SHORT_NAME, false)
88+
.add(LONG_NAME, false)
89+
.addValue(true)
90+
.add(SHORT_NAME, (byte) 1)
91+
.add(LONG_NAME, (byte) 2)
92+
.addValue((byte) 3)
93+
.add(SHORT_NAME, 'A')
94+
.add(LONG_NAME, 'B')
95+
.addValue('C')
96+
.add(SHORT_NAME, (short) 4)
97+
.add(LONG_NAME, (short) 5)
98+
.addValue((short) 6)
99+
.add(SHORT_NAME, 7)
100+
.add(LONG_NAME, 8)
101+
.addValue(9)
102+
.add(SHORT_NAME, 10L)
103+
.add(LONG_NAME, 11L)
104+
.addValue(12L)
105+
.add(SHORT_NAME, 13.0f)
106+
.add(LONG_NAME, 14.0f)
107+
.addValue(15.0f);
108+
}
109+
};
110+
111+
void addEntries(MoreObjects.ToStringHelper helper) {}
112+
}
113+
114+
@Param Dataset dataset;
115+
116+
private static final String SHORT_NAME = "userId";
117+
private static final String LONG_NAME = "fluxCapacitorFailureRate95Percentile";
118+
119+
private MoreObjects.ToStringHelper newHelper() {
120+
MoreObjects.ToStringHelper helper = MoreObjects.toStringHelper("klass");
121+
if (omitNulls) {
122+
helper = helper.omitNullValues();
123+
}
124+
return helper;
44125
}
45126

46127
@Benchmark
47128
int toString(int reps) {
48129
int dummy = 0;
49130
for (int i = 0; i < reps; i++) {
50-
MoreObjects.ToStringHelper helper = MoreObjects.toStringHelper("klass").omitNullValues();
131+
MoreObjects.ToStringHelper helper = newHelper();
51132
for (int j = 0; j < dataSize; ++j) {
52-
addEntries(helper);
133+
dataset.addEntries(helper);
53134
}
54135
dummy ^= helper.toString().hashCode();
55136
}

guava-tests/benchmark/com/google/common/base/ToStringHelperBenchmark.java

+96-15
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,8 @@
1818

1919
import com.google.caliper.Benchmark;
2020
import com.google.caliper.Param;
21+
import java.util.Arrays;
22+
import java.util.Collections;
2123

2224
/**
2325
* Some microbenchmarks for the {@link MoreObjects.ToStringHelper} class.
@@ -26,30 +28,109 @@
2628
*/
2729
public class ToStringHelperBenchmark {
2830

29-
@Param({"0", "2", "5", "10"})
31+
@Param({"0", "1", "5"})
3032
int dataSize;
3133

32-
private static final String NAME = "abcdefgh";
33-
private static final String NAME3 = Strings.repeat(NAME, 3);
34-
35-
private static void addEntries(MoreObjects.ToStringHelper helper) {
36-
helper
37-
.add(NAME, 10)
38-
.addValue(10L)
39-
.add(NAME, 3.14f)
40-
.addValue(3.14d)
41-
.add(NAME3, false)
42-
.add(NAME3, NAME3)
43-
.add(NAME3, 'x');
34+
@Param({"false", "true"})
35+
boolean omitNulls;
36+
37+
enum Dataset {
38+
SMALL {
39+
void addEntries(MoreObjects.ToStringHelper helper) {
40+
helper
41+
.add(SHORT_NAME, 10)
42+
.addValue(10L)
43+
.add(SHORT_NAME, 3.14f)
44+
.addValue(3.14d)
45+
.add(LONG_NAME, false)
46+
.add(LONG_NAME, LONG_NAME);
47+
}
48+
},
49+
CONDITIONAL {
50+
void addEntries(MoreObjects.ToStringHelper helper) {
51+
helper
52+
.add(SHORT_NAME, "x")
53+
.add(LONG_NAME, "y")
54+
.add(SHORT_NAME, null)
55+
.add(LONG_NAME, null)
56+
.addValue("z")
57+
.addValue("")
58+
.addValue(null)
59+
.add(SHORT_NAME, Arrays.asList("A"))
60+
.add(LONG_NAME, Arrays.asList("B"))
61+
.add(SHORT_NAME, Arrays.asList())
62+
.add(LONG_NAME, Arrays.asList())
63+
.addValue(Arrays.asList("C"))
64+
.addValue(Arrays.asList())
65+
.add(SHORT_NAME, Collections.singletonMap("k1", "v1"))
66+
.add(LONG_NAME, Collections.singletonMap("k2", "v2"))
67+
.addValue(Collections.singletonMap("k3", "v3"))
68+
.addValue(Collections.emptyMap())
69+
.addValue(null)
70+
.add(SHORT_NAME, java.util.Optional.of("1"))
71+
.add(LONG_NAME, java.util.Optional.of("1"))
72+
.add(SHORT_NAME, java.util.Optional.empty())
73+
.add(LONG_NAME, java.util.Optional.empty())
74+
.add(SHORT_NAME, Optional.of("2"))
75+
.add(SHORT_NAME, Optional.absent())
76+
.addValue(null)
77+
.add(SHORT_NAME, new int[] {1})
78+
.add(LONG_NAME, new int[] {2})
79+
.addValue(new int[] {3})
80+
.addValue(new int[] {})
81+
.addValue(null);
82+
}
83+
},
84+
UNCONDITIONAL {
85+
void addEntries(MoreObjects.ToStringHelper helper) {
86+
helper
87+
.add(SHORT_NAME, false)
88+
.add(LONG_NAME, false)
89+
.addValue(true)
90+
.add(SHORT_NAME, (byte) 1)
91+
.add(LONG_NAME, (byte) 2)
92+
.addValue((byte) 3)
93+
.add(SHORT_NAME, 'A')
94+
.add(LONG_NAME, 'B')
95+
.addValue('C')
96+
.add(SHORT_NAME, (short) 4)
97+
.add(LONG_NAME, (short) 5)
98+
.addValue((short) 6)
99+
.add(SHORT_NAME, 7)
100+
.add(LONG_NAME, 8)
101+
.addValue(9)
102+
.add(SHORT_NAME, 10L)
103+
.add(LONG_NAME, 11L)
104+
.addValue(12L)
105+
.add(SHORT_NAME, 13.0f)
106+
.add(LONG_NAME, 14.0f)
107+
.addValue(15.0f);
108+
}
109+
};
110+
111+
void addEntries(MoreObjects.ToStringHelper helper) {}
112+
}
113+
114+
@Param Dataset dataset;
115+
116+
private static final String SHORT_NAME = "userId";
117+
private static final String LONG_NAME = "fluxCapacitorFailureRate95Percentile";
118+
119+
private MoreObjects.ToStringHelper newHelper() {
120+
MoreObjects.ToStringHelper helper = MoreObjects.toStringHelper("klass");
121+
if (omitNulls) {
122+
helper = helper.omitNullValues();
123+
}
124+
return helper;
44125
}
45126

46127
@Benchmark
47128
int toString(int reps) {
48129
int dummy = 0;
49130
for (int i = 0; i < reps; i++) {
50-
MoreObjects.ToStringHelper helper = MoreObjects.toStringHelper("klass").omitNullValues();
131+
MoreObjects.ToStringHelper helper = newHelper();
51132
for (int j = 0; j < dataSize; ++j) {
52-
addEntries(helper);
133+
dataset.addEntries(helper);
53134
}
54135
dummy ^= helper.toString().hashCode();
55136
}

0 commit comments

Comments
 (0)