Skip to content

Commit

Permalink
ToStringHelper: omitEmptyValues() - Benchmark updates
Browse files Browse the repository at this point in the history
PiperOrigin-RevId: 360760353
  • Loading branch information
java-team-github-bot authored and Google Java Core Libraries committed Mar 3, 2021
1 parent b109664 commit 7f30024
Show file tree
Hide file tree
Showing 2 changed files with 192 additions and 30 deletions.
Expand Up @@ -18,6 +18,8 @@

import com.google.caliper.Benchmark;
import com.google.caliper.Param;
import java.util.Arrays;
import java.util.Collections;

/**
* Some microbenchmarks for the {@link MoreObjects.ToStringHelper} class.
Expand All @@ -26,30 +28,109 @@
*/
public class ToStringHelperBenchmark {

@Param({"0", "2", "5", "10"})
@Param({"0", "1", "5"})
int dataSize;

private static final String NAME = "abcdefgh";
private static final String NAME3 = Strings.repeat(NAME, 3);

private static void addEntries(MoreObjects.ToStringHelper helper) {
helper
.add(NAME, 10)
.addValue(10L)
.add(NAME, 3.14f)
.addValue(3.14d)
.add(NAME3, false)
.add(NAME3, NAME3)
.add(NAME3, 'x');
@Param({"false", "true"})
boolean omitNulls;

enum Dataset {
SMALL {
void addEntries(MoreObjects.ToStringHelper helper) {
helper
.add(SHORT_NAME, 10)
.addValue(10L)
.add(SHORT_NAME, 3.14f)
.addValue(3.14d)
.add(LONG_NAME, false)
.add(LONG_NAME, LONG_NAME);
}
},
CONDITIONAL {
void addEntries(MoreObjects.ToStringHelper helper) {
helper
.add(SHORT_NAME, "x")
.add(LONG_NAME, "y")
.add(SHORT_NAME, null)
.add(LONG_NAME, null)
.addValue("z")
.addValue("")
.addValue(null)
.add(SHORT_NAME, Arrays.asList("A"))
.add(LONG_NAME, Arrays.asList("B"))
.add(SHORT_NAME, Arrays.asList())
.add(LONG_NAME, Arrays.asList())
.addValue(Arrays.asList("C"))
.addValue(Arrays.asList())
.add(SHORT_NAME, Collections.singletonMap("k1", "v1"))
.add(LONG_NAME, Collections.singletonMap("k2", "v2"))
.addValue(Collections.singletonMap("k3", "v3"))
.addValue(Collections.emptyMap())
.addValue(null)
.add(SHORT_NAME, Optional.of("1"))
.add(LONG_NAME, Optional.of("1"))
.add(SHORT_NAME, Optional.absent())
.add(LONG_NAME, Optional.absent())
.add(SHORT_NAME, Optional.of("2"))
.add(SHORT_NAME, Optional.absent())
.addValue(null)
.add(SHORT_NAME, new int[] {1})
.add(LONG_NAME, new int[] {2})
.addValue(new int[] {3})
.addValue(new int[] {})
.addValue(null);
}
},
UNCONDITIONAL {
void addEntries(MoreObjects.ToStringHelper helper) {
helper
.add(SHORT_NAME, false)
.add(LONG_NAME, false)
.addValue(true)
.add(SHORT_NAME, (byte) 1)
.add(LONG_NAME, (byte) 2)
.addValue((byte) 3)
.add(SHORT_NAME, 'A')
.add(LONG_NAME, 'B')
.addValue('C')
.add(SHORT_NAME, (short) 4)
.add(LONG_NAME, (short) 5)
.addValue((short) 6)
.add(SHORT_NAME, 7)
.add(LONG_NAME, 8)
.addValue(9)
.add(SHORT_NAME, 10L)
.add(LONG_NAME, 11L)
.addValue(12L)
.add(SHORT_NAME, 13.0f)
.add(LONG_NAME, 14.0f)
.addValue(15.0f);
}
};

void addEntries(MoreObjects.ToStringHelper helper) {}
}

@Param Dataset dataset;

private static final String SHORT_NAME = "userId";
private static final String LONG_NAME = "fluxCapacitorFailureRate95Percentile";

private MoreObjects.ToStringHelper newHelper() {
MoreObjects.ToStringHelper helper = MoreObjects.toStringHelper("klass");
if (omitNulls) {
helper = helper.omitNullValues();
}
return helper;
}

@Benchmark
int toString(int reps) {
int dummy = 0;
for (int i = 0; i < reps; i++) {
MoreObjects.ToStringHelper helper = MoreObjects.toStringHelper("klass").omitNullValues();
MoreObjects.ToStringHelper helper = newHelper();
for (int j = 0; j < dataSize; ++j) {
addEntries(helper);
dataset.addEntries(helper);
}
dummy ^= helper.toString().hashCode();
}
Expand Down
Expand Up @@ -18,6 +18,8 @@

import com.google.caliper.Benchmark;
import com.google.caliper.Param;
import java.util.Arrays;
import java.util.Collections;

/**
* Some microbenchmarks for the {@link MoreObjects.ToStringHelper} class.
Expand All @@ -26,30 +28,109 @@
*/
public class ToStringHelperBenchmark {

@Param({"0", "2", "5", "10"})
@Param({"0", "1", "5"})
int dataSize;

private static final String NAME = "abcdefgh";
private static final String NAME3 = Strings.repeat(NAME, 3);

private static void addEntries(MoreObjects.ToStringHelper helper) {
helper
.add(NAME, 10)
.addValue(10L)
.add(NAME, 3.14f)
.addValue(3.14d)
.add(NAME3, false)
.add(NAME3, NAME3)
.add(NAME3, 'x');
@Param({"false", "true"})
boolean omitNulls;

enum Dataset {
SMALL {
void addEntries(MoreObjects.ToStringHelper helper) {
helper
.add(SHORT_NAME, 10)
.addValue(10L)
.add(SHORT_NAME, 3.14f)
.addValue(3.14d)
.add(LONG_NAME, false)
.add(LONG_NAME, LONG_NAME);
}
},
CONDITIONAL {
void addEntries(MoreObjects.ToStringHelper helper) {
helper
.add(SHORT_NAME, "x")
.add(LONG_NAME, "y")
.add(SHORT_NAME, null)
.add(LONG_NAME, null)
.addValue("z")
.addValue("")
.addValue(null)
.add(SHORT_NAME, Arrays.asList("A"))
.add(LONG_NAME, Arrays.asList("B"))
.add(SHORT_NAME, Arrays.asList())
.add(LONG_NAME, Arrays.asList())
.addValue(Arrays.asList("C"))
.addValue(Arrays.asList())
.add(SHORT_NAME, Collections.singletonMap("k1", "v1"))
.add(LONG_NAME, Collections.singletonMap("k2", "v2"))
.addValue(Collections.singletonMap("k3", "v3"))
.addValue(Collections.emptyMap())
.addValue(null)
.add(SHORT_NAME, java.util.Optional.of("1"))
.add(LONG_NAME, java.util.Optional.of("1"))
.add(SHORT_NAME, java.util.Optional.empty())
.add(LONG_NAME, java.util.Optional.empty())
.add(SHORT_NAME, Optional.of("2"))
.add(SHORT_NAME, Optional.absent())
.addValue(null)
.add(SHORT_NAME, new int[] {1})
.add(LONG_NAME, new int[] {2})
.addValue(new int[] {3})
.addValue(new int[] {})
.addValue(null);
}
},
UNCONDITIONAL {
void addEntries(MoreObjects.ToStringHelper helper) {
helper
.add(SHORT_NAME, false)
.add(LONG_NAME, false)
.addValue(true)
.add(SHORT_NAME, (byte) 1)
.add(LONG_NAME, (byte) 2)
.addValue((byte) 3)
.add(SHORT_NAME, 'A')
.add(LONG_NAME, 'B')
.addValue('C')
.add(SHORT_NAME, (short) 4)
.add(LONG_NAME, (short) 5)
.addValue((short) 6)
.add(SHORT_NAME, 7)
.add(LONG_NAME, 8)
.addValue(9)
.add(SHORT_NAME, 10L)
.add(LONG_NAME, 11L)
.addValue(12L)
.add(SHORT_NAME, 13.0f)
.add(LONG_NAME, 14.0f)
.addValue(15.0f);
}
};

void addEntries(MoreObjects.ToStringHelper helper) {}
}

@Param Dataset dataset;

private static final String SHORT_NAME = "userId";
private static final String LONG_NAME = "fluxCapacitorFailureRate95Percentile";

private MoreObjects.ToStringHelper newHelper() {
MoreObjects.ToStringHelper helper = MoreObjects.toStringHelper("klass");
if (omitNulls) {
helper = helper.omitNullValues();
}
return helper;
}

@Benchmark
int toString(int reps) {
int dummy = 0;
for (int i = 0; i < reps; i++) {
MoreObjects.ToStringHelper helper = MoreObjects.toStringHelper("klass").omitNullValues();
MoreObjects.ToStringHelper helper = newHelper();
for (int j = 0; j < dataSize; ++j) {
addEntries(helper);
dataset.addEntries(helper);
}
dummy ^= helper.toString().hashCode();
}
Expand Down

0 comments on commit 7f30024

Please sign in to comment.