Update Caliper dependency; disable automatic result upload (#2019)
This commit is contained in:
parent
0313de8206
commit
16b42ff580
@ -39,7 +39,7 @@
|
||||
<dependency>
|
||||
<groupId>com.google.caliper</groupId>
|
||||
<artifactId>caliper</artifactId>
|
||||
<version>0.5-rc1</version>
|
||||
<version>1.0-beta-3</version>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
|
||||
|
@ -15,15 +15,13 @@
|
||||
*/
|
||||
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.StringReader;
|
||||
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
|
||||
*
|
||||
@ -31,17 +29,17 @@ import com.google.gson.stream.JsonReader;
|
||||
* @author Jesse Wilson
|
||||
* @author Joel Leitch
|
||||
*/
|
||||
public class BagOfPrimitivesDeserializationBenchmark extends SimpleBenchmark {
|
||||
public class BagOfPrimitivesDeserializationBenchmark {
|
||||
|
||||
private Gson gson;
|
||||
private String json;
|
||||
|
||||
public static void main(String[] args) {
|
||||
Runner.main(BagOfPrimitivesDeserializationBenchmark.class, args);
|
||||
NonUploadingCaliperRunner.run(BagOfPrimitivesDeserializationBenchmark.class, args);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void setUp() throws Exception {
|
||||
@BeforeExperiment
|
||||
void setUp() throws Exception {
|
||||
this.gson = new Gson();
|
||||
BagOfPrimitives bag = new BagOfPrimitives(10L, 1, false, "foo");
|
||||
this.json = gson.toJson(bag);
|
||||
|
@ -15,6 +15,10 @@
|
||||
*/
|
||||
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.StringReader;
|
||||
import java.lang.reflect.Field;
|
||||
@ -22,29 +26,23 @@ import java.lang.reflect.Type;
|
||||
import java.util.ArrayList;
|
||||
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
|
||||
*
|
||||
* @author Inderjeet Singh
|
||||
*/
|
||||
public class CollectionsDeserializationBenchmark extends SimpleBenchmark {
|
||||
public class CollectionsDeserializationBenchmark {
|
||||
|
||||
private static final Type LIST_TYPE = new TypeToken<List<BagOfPrimitives>>(){}.getType();
|
||||
private Gson gson;
|
||||
private String json;
|
||||
|
||||
public static void main(String[] args) {
|
||||
Runner.main(CollectionsDeserializationBenchmark.class, args);
|
||||
NonUploadingCaliperRunner.run(CollectionsDeserializationBenchmark.class, args);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void setUp() throws Exception {
|
||||
@BeforeExperiment
|
||||
void setUp() throws Exception {
|
||||
this.gson = new Gson();
|
||||
List<BagOfPrimitives> bags = new ArrayList<BagOfPrimitives>();
|
||||
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.ObjectMapper;
|
||||
import com.fasterxml.jackson.databind.json.JsonMapper;
|
||||
import com.google.caliper.BeforeExperiment;
|
||||
import com.google.caliper.Param;
|
||||
import com.google.caliper.Runner;
|
||||
import com.google.caliper.SimpleBenchmark;
|
||||
import com.google.gson.Gson;
|
||||
import com.google.gson.GsonBuilder;
|
||||
import com.google.gson.JsonParser;
|
||||
import com.google.gson.annotations.SerializedName;
|
||||
import com.google.gson.reflect.TypeToken;
|
||||
import java.io.CharArrayReader;
|
||||
import java.io.File;
|
||||
import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
import java.io.InputStreamReader;
|
||||
import java.io.Reader;
|
||||
import java.io.StringWriter;
|
||||
import java.lang.reflect.Type;
|
||||
import java.net.URL;
|
||||
import java.text.SimpleDateFormat;
|
||||
import java.util.Date;
|
||||
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.
|
||||
@ -50,7 +53,7 @@ import java.util.List;
|
||||
* That file contains Twitter feed data, which is representative of what
|
||||
* applications will be parsing.
|
||||
*/
|
||||
public final class ParseBenchmark extends SimpleBenchmark {
|
||||
public final class ParseBenchmark {
|
||||
@Param Document document;
|
||||
@Param Api api;
|
||||
|
||||
@ -105,8 +108,9 @@ public final class ParseBenchmark extends SimpleBenchmark {
|
||||
private char[] text;
|
||||
private Parser parser;
|
||||
|
||||
@Override protected void setUp() throws Exception {
|
||||
text = resourceToString("/" + document.name() + ".json").toCharArray();
|
||||
@BeforeExperiment
|
||||
void setUp() throws Exception {
|
||||
text = resourceToString(document.name() + ".json").toCharArray();
|
||||
parser = api.newParser();
|
||||
}
|
||||
|
||||
@ -116,25 +120,39 @@ public final class ParseBenchmark extends SimpleBenchmark {
|
||||
}
|
||||
}
|
||||
|
||||
private static String resourceToString(String path) throws Exception {
|
||||
InputStream in = ParseBenchmark.class.getResourceAsStream(path);
|
||||
if (in == null) {
|
||||
throw new IllegalArgumentException("No such file: " + path);
|
||||
private static File getResourceFile(String path) throws Exception {
|
||||
URL url = ParseBenchmark.class.getResource(path);
|
||||
if (url == null) {
|
||||
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");
|
||||
char[] buffer = new char[8192];
|
||||
StringWriter writer = new StringWriter();
|
||||
int count;
|
||||
while ((count = reader.read(buffer)) != -1) {
|
||||
writer.write(buffer, 0, count);
|
||||
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];
|
||||
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 {
|
||||
Runner.main(ParseBenchmark.class, args);
|
||||
NonUploadingCaliperRunner.run(ParseBenchmark.class, args);
|
||||
}
|
||||
|
||||
interface Parser {
|
||||
@ -257,7 +275,7 @@ public final class ParseBenchmark extends SimpleBenchmark {
|
||||
.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false)
|
||||
.configure(MapperFeature.AUTO_DETECT_FIELDS, true)
|
||||
.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
|
||||
|
@ -15,9 +15,8 @@
|
||||
*/
|
||||
package com.google.gson.metrics;
|
||||
|
||||
import com.google.caliper.BeforeExperiment;
|
||||
import com.google.caliper.Param;
|
||||
import com.google.caliper.Runner;
|
||||
import com.google.caliper.SimpleBenchmark;
|
||||
import com.google.gson.Gson;
|
||||
import com.google.gson.GsonBuilder;
|
||||
|
||||
@ -28,7 +27,7 @@ import com.google.gson.GsonBuilder;
|
||||
* @author Jesse Wilson
|
||||
* @author Joel Leitch
|
||||
*/
|
||||
public class SerializationBenchmark extends SimpleBenchmark {
|
||||
public class SerializationBenchmark {
|
||||
|
||||
private Gson gson;
|
||||
private BagOfPrimitives bag;
|
||||
@ -36,11 +35,11 @@ public class SerializationBenchmark extends SimpleBenchmark {
|
||||
private boolean pretty;
|
||||
|
||||
public static void main(String[] args) {
|
||||
Runner.main(SerializationBenchmark.class, args);
|
||||
NonUploadingCaliperRunner.run(SerializationBenchmark.class, args);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void setUp() throws Exception {
|
||||
@BeforeExperiment
|
||||
void setUp() throws Exception {
|
||||
this.gson = pretty ? new GsonBuilder().setPrettyPrinting().create() : new Gson();
|
||||
this.bag = new BagOfPrimitives(10L, 1, false, "foo");
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user