Update Caliper dependency; disable automatic result upload (#2019)
This commit is contained in:
parent
0313de8206
commit
16b42ff580
@ -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>
|
||||||
|
|
||||||
|
@ -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);
|
||||||
|
@ -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) {
|
||||||
|
@ -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));
|
||||||
|
}
|
||||||
|
}
|
@ -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,13 +120,23 @@ 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 {
|
||||||
|
ZipFile zipFile = new ZipFile(getResourceFile("/ParseBenchmarkData.zip"));
|
||||||
|
try {
|
||||||
|
ZipEntry zipEntry = zipFile.getEntry(fileName);
|
||||||
|
Reader reader = new InputStreamReader(zipFile.getInputStream(zipEntry));
|
||||||
char[] buffer = new char[8192];
|
char[] buffer = new char[8192];
|
||||||
StringWriter writer = new StringWriter();
|
StringWriter writer = new StringWriter();
|
||||||
int count;
|
int count;
|
||||||
@ -131,10 +145,14 @@ public final class ParseBenchmark extends SimpleBenchmark {
|
|||||||
}
|
}
|
||||||
reader.close();
|
reader.close();
|
||||||
return writer.toString();
|
return writer.toString();
|
||||||
|
|
||||||
|
} finally {
|
||||||
|
zipFile.close();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
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
|
||||||
|
@ -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");
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user