• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 package perf;
2 
3 import com.fasterxml.jackson.core.*;
4 
5 /**
6  * Manually run micro-benchmark for checking performance of tokenizing
7  * simple tokens (false, true, null).
8  */
9 public class ManualSmallTokenRead extends ParserTestBase
10 {
11     protected final JsonFactory _factory;
12 
13     protected final byte[] _jsonBytes;
14     protected final char[] _jsonChars;
15 
ManualSmallTokenRead(JsonFactory f, String json)16     private ManualSmallTokenRead(JsonFactory f, String json) throws Exception {
17         _factory = f;
18         _jsonChars = json.toCharArray();
19         _jsonBytes = json.getBytes("UTF-8");
20     }
21 
main(String[] args)22     public static void main(String[] args) throws Exception
23     {
24         if (args.length != 0) {
25             System.err.println("Usage: java ...");
26             System.exit(1);
27         }
28         final JsonFactory f = new JsonFactory();
29         final String jsonStr = aposToQuotes(
30 "{'data':[true,false,null,false,null,true],'last':true}"
31                 );
32         new ManualSmallTokenRead(f, jsonStr).test("char[]", "byte[]", jsonStr.length());
33     }
34 
35     @Override
testRead1(int reps)36     protected void testRead1(int reps) throws Exception
37     {
38         while (--reps >= 0) {
39             JsonParser p = _factory.createParser(_jsonChars);
40             _stream(p);
41             p.close();
42         }
43     }
44 
45     @Override
testRead2(int reps)46     protected void testRead2(int reps) throws Exception
47     {
48         while (--reps >= 0) {
49             JsonParser p = _factory.createParser(_jsonBytes);
50             _stream(p);
51             p.close();
52         }
53     }
54 
_stream(JsonParser p)55     private final void _stream(JsonParser p) throws Exception
56     {
57         JsonToken t;
58 
59         while ((t = p.nextToken()) != null) {
60             // force decoding/reading of scalar values too (booleans are fine, nulls too)
61             if (t == JsonToken.VALUE_STRING) {
62                 p.getText();
63             } else if (t == JsonToken.VALUE_NUMBER_INT) {
64                 p.getLongValue();
65             }
66         }
67     }
68 }
69