Update Caliper dependency; disable automatic result upload (#2019)

This commit is contained in:
Marcono1234 2021-11-22 19:01:26 +01:00 committed by GitHub
parent 0313de8206
commit 16b42ff580
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
7 changed files with 80 additions and 46 deletions

View File

@ -39,7 +39,7 @@
<dependency> <dependency>
<groupId>com.google.caliper</groupId> <groupId>com.google.caliper</groupId>
<artifactId>caliper</artifactId> <artifactId>caliper</artifactId>
<version>0.5-rc1</version> <version>1.0-beta-3</version>
</dependency> </dependency>
</dependencies> </dependencies>

View File

@ -15,15 +15,13 @@
*/ */
package com.google.gson.metrics; package com.google.gson.metrics;
import com.google.caliper.BeforeExperiment;
import com.google.gson.Gson;
import com.google.gson.stream.JsonReader;
import java.io.IOException; import java.io.IOException;
import java.io.StringReader; import java.io.StringReader;
import java.lang.reflect.Field; import java.lang.reflect.Field;
import com.google.caliper.Runner;
import com.google.caliper.SimpleBenchmark;
import com.google.gson.Gson;
import com.google.gson.stream.JsonReader;
/** /**
* Caliper based micro benchmarks for Gson * Caliper based micro benchmarks for Gson
* *
@ -31,17 +29,17 @@ import com.google.gson.stream.JsonReader;
* @author Jesse Wilson * @author Jesse Wilson
* @author Joel Leitch * @author Joel Leitch
*/ */
public class BagOfPrimitivesDeserializationBenchmark extends SimpleBenchmark { public class BagOfPrimitivesDeserializationBenchmark {
private Gson gson; private Gson gson;
private String json; private String json;
public static void main(String[] args) { public static void main(String[] args) {
Runner.main(BagOfPrimitivesDeserializationBenchmark.class, args); NonUploadingCaliperRunner.run(BagOfPrimitivesDeserializationBenchmark.class, args);
} }
@Override @BeforeExperiment
protected void setUp() throws Exception { void setUp() throws Exception {
this.gson = new Gson(); this.gson = new Gson();
BagOfPrimitives bag = new BagOfPrimitives(10L, 1, false, "foo"); BagOfPrimitives bag = new BagOfPrimitives(10L, 1, false, "foo");
this.json = gson.toJson(bag); this.json = gson.toJson(bag);

View File

@ -15,6 +15,10 @@
*/ */
package com.google.gson.metrics; package com.google.gson.metrics;
import com.google.caliper.BeforeExperiment;
import com.google.gson.Gson;
import com.google.gson.reflect.TypeToken;
import com.google.gson.stream.JsonReader;
import java.io.IOException; import java.io.IOException;
import java.io.StringReader; import java.io.StringReader;
import java.lang.reflect.Field; import java.lang.reflect.Field;
@ -22,29 +26,23 @@ import java.lang.reflect.Type;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import com.google.caliper.Runner;
import com.google.caliper.SimpleBenchmark;
import com.google.gson.Gson;
import com.google.gson.reflect.TypeToken;
import com.google.gson.stream.JsonReader;
/** /**
* Caliper based micro benchmarks for Gson * Caliper based micro benchmarks for Gson
* *
* @author Inderjeet Singh * @author Inderjeet Singh
*/ */
public class CollectionsDeserializationBenchmark extends SimpleBenchmark { public class CollectionsDeserializationBenchmark {
private static final Type LIST_TYPE = new TypeToken<List<BagOfPrimitives>>(){}.getType(); private static final Type LIST_TYPE = new TypeToken<List<BagOfPrimitives>>(){}.getType();
private Gson gson; private Gson gson;
private String json; private String json;
public static void main(String[] args) { public static void main(String[] args) {
Runner.main(CollectionsDeserializationBenchmark.class, args); NonUploadingCaliperRunner.run(CollectionsDeserializationBenchmark.class, args);
} }
@Override @BeforeExperiment
protected void setUp() throws Exception { void setUp() throws Exception {
this.gson = new Gson(); this.gson = new Gson();
List<BagOfPrimitives> bags = new ArrayList<BagOfPrimitives>(); List<BagOfPrimitives> bags = new ArrayList<BagOfPrimitives>();
for (int i = 0; i < 100; ++i) { for (int i = 0; i < 100; ++i) {

View File

@ -0,0 +1,21 @@
package com.google.gson.metrics;
import com.google.caliper.runner.CaliperMain;
class NonUploadingCaliperRunner {
private static String[] concat(String first, String... others) {
if (others.length == 0) {
return new String[] { first };
} else {
String[] result = new String[others.length + 1];
result[0] = first;
System.arraycopy(others, 0, result, 1, others.length);
return result;
}
}
public static void run(Class<?> c, String[] args) {
// Disable result upload; Caliper uploads results to webapp by default, see https://github.com/google/caliper/issues/356
CaliperMain.main(c, concat("-Cresults.upload.options.url=", args));
}
}

View File

@ -24,24 +24,27 @@ import com.fasterxml.jackson.databind.DeserializationFeature;
import com.fasterxml.jackson.databind.MapperFeature; import com.fasterxml.jackson.databind.MapperFeature;
import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.json.JsonMapper; import com.fasterxml.jackson.databind.json.JsonMapper;
import com.google.caliper.BeforeExperiment;
import com.google.caliper.Param; import com.google.caliper.Param;
import com.google.caliper.Runner;
import com.google.caliper.SimpleBenchmark;
import com.google.gson.Gson; import com.google.gson.Gson;
import com.google.gson.GsonBuilder; import com.google.gson.GsonBuilder;
import com.google.gson.JsonParser; import com.google.gson.JsonParser;
import com.google.gson.annotations.SerializedName; import com.google.gson.annotations.SerializedName;
import com.google.gson.reflect.TypeToken; import com.google.gson.reflect.TypeToken;
import java.io.CharArrayReader; import java.io.CharArrayReader;
import java.io.File;
import java.io.IOException; import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader; import java.io.InputStreamReader;
import java.io.Reader; import java.io.Reader;
import java.io.StringWriter; import java.io.StringWriter;
import java.lang.reflect.Type; import java.lang.reflect.Type;
import java.net.URL;
import java.text.SimpleDateFormat; import java.text.SimpleDateFormat;
import java.util.Date; import java.util.Date;
import java.util.List; import java.util.List;
import java.util.Locale;
import java.util.zip.ZipEntry;
import java.util.zip.ZipFile;
/** /**
* Measure Gson and Jackson parsing and binding performance. * Measure Gson and Jackson parsing and binding performance.
@ -50,7 +53,7 @@ import java.util.List;
* That file contains Twitter feed data, which is representative of what * That file contains Twitter feed data, which is representative of what
* applications will be parsing. * applications will be parsing.
*/ */
public final class ParseBenchmark extends SimpleBenchmark { public final class ParseBenchmark {
@Param Document document; @Param Document document;
@Param Api api; @Param Api api;
@ -105,8 +108,9 @@ public final class ParseBenchmark extends SimpleBenchmark {
private char[] text; private char[] text;
private Parser parser; private Parser parser;
@Override protected void setUp() throws Exception { @BeforeExperiment
text = resourceToString("/" + document.name() + ".json").toCharArray(); void setUp() throws Exception {
text = resourceToString(document.name() + ".json").toCharArray();
parser = api.newParser(); parser = api.newParser();
} }
@ -116,25 +120,39 @@ public final class ParseBenchmark extends SimpleBenchmark {
} }
} }
private static String resourceToString(String path) throws Exception { private static File getResourceFile(String path) throws Exception {
InputStream in = ParseBenchmark.class.getResourceAsStream(path); URL url = ParseBenchmark.class.getResource(path);
if (in == null) { if (url == null) {
throw new IllegalArgumentException("No such file: " + path); throw new IllegalArgumentException("Resource " + path + " does not exist");
} }
File file = new File(url.toURI());
if (!file.isFile()) {
throw new IllegalArgumentException("Resource " + path + " is not a file");
}
return file;
}
Reader reader = new InputStreamReader(in, "UTF-8"); private static String resourceToString(String fileName) throws Exception {
char[] buffer = new char[8192]; ZipFile zipFile = new ZipFile(getResourceFile("/ParseBenchmarkData.zip"));
StringWriter writer = new StringWriter(); try {
int count; ZipEntry zipEntry = zipFile.getEntry(fileName);
while ((count = reader.read(buffer)) != -1) { Reader reader = new InputStreamReader(zipFile.getInputStream(zipEntry));
writer.write(buffer, 0, count); char[] buffer = new char[8192];
StringWriter writer = new StringWriter();
int count;
while ((count = reader.read(buffer)) != -1) {
writer.write(buffer, 0, count);
}
reader.close();
return writer.toString();
} finally {
zipFile.close();
} }
reader.close();
return writer.toString();
} }
public static void main(String[] args) throws Exception { public static void main(String[] args) throws Exception {
Runner.main(ParseBenchmark.class, args); NonUploadingCaliperRunner.run(ParseBenchmark.class, args);
} }
interface Parser { interface Parser {
@ -257,7 +275,7 @@ public final class ParseBenchmark extends SimpleBenchmark {
.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false) .configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false)
.configure(MapperFeature.AUTO_DETECT_FIELDS, true) .configure(MapperFeature.AUTO_DETECT_FIELDS, true)
.build(); .build();
mapper.setDateFormat(new SimpleDateFormat("EEE MMM dd HH:mm:ss Z yyyy")); mapper.setDateFormat(new SimpleDateFormat("EEE MMM dd HH:mm:ss Z yyyy", Locale.ENGLISH));
} }
@Override @Override

View File

@ -15,9 +15,8 @@
*/ */
package com.google.gson.metrics; package com.google.gson.metrics;
import com.google.caliper.BeforeExperiment;
import com.google.caliper.Param; import com.google.caliper.Param;
import com.google.caliper.Runner;
import com.google.caliper.SimpleBenchmark;
import com.google.gson.Gson; import com.google.gson.Gson;
import com.google.gson.GsonBuilder; import com.google.gson.GsonBuilder;
@ -28,7 +27,7 @@ import com.google.gson.GsonBuilder;
* @author Jesse Wilson * @author Jesse Wilson
* @author Joel Leitch * @author Joel Leitch
*/ */
public class SerializationBenchmark extends SimpleBenchmark { public class SerializationBenchmark {
private Gson gson; private Gson gson;
private BagOfPrimitives bag; private BagOfPrimitives bag;
@ -36,11 +35,11 @@ public class SerializationBenchmark extends SimpleBenchmark {
private boolean pretty; private boolean pretty;
public static void main(String[] args) { public static void main(String[] args) {
Runner.main(SerializationBenchmark.class, args); NonUploadingCaliperRunner.run(SerializationBenchmark.class, args);
} }
@Override @BeforeExperiment
protected void setUp() throws Exception { void setUp() throws Exception {
this.gson = pretty ? new GsonBuilder().setPrettyPrinting().create() : new Gson(); this.gson = pretty ? new GsonBuilder().setPrettyPrinting().create() : new Gson();
this.bag = new BagOfPrimitives(10L, 1, false, "foo"); this.bag = new BagOfPrimitives(10L, 1, false, "foo");
} }