content: package com.alibaba.json.test;
  
  import com.alibaba.fastjson.JSON;
  import com.alibaba.fastjson.JSONException;
  import com.alibaba.fastjson.parser.DefaultJSONParser;
  import com.alibaba.fastjson.parser.JSONLexerBase;
  import com.alibaba.fastjson.parser.JSONToken;
  import com.alibaba.fastjson.parser.ParserConfig;
  import com.alibaba.fastjson.parser.deserializer.ObjectDeserializer;
  import com.jsoniter.JsonIterator;
  import com.jsoniter.spi.TypeLiteral;
  import junit.framework.TestCase;
  
  import java.lang.reflect.Type;
  
  /**
   * Created by wenshao on 27/12/2016.
   */
  public class JsonIteratorImageTest extends TestCase {
      private String input = "{\"bitrate\":262144,\"duration\":18000000,\"format\":\"video/mpg4\",\"height\":480,\"persons\":[\"Bill Gates\",\"Steve Jobs\"],\"player\":\"JAVA\",\"size\":58982400,\"title\":\"Javaone Keynote\",\"uri\":\"http://javaone.com/keynote.mpg\",\"width\":640}";
      private byte[] inputBytes = input.getBytes();
      private TypeLiteral<Model> modelTypeLiteral; // this is thread-safe can reused
      private JsonIterator iter;
  
      private int COUNT = 1000 * 1000 * 1;
  
      protected void setUp() throws Exception {
          inputBytes = input.getBytes();
          iter = new JsonIterator();
          modelTypeLiteral = new TypeLiteral<Model>() {
          };
      }
  
      public void test_for_iterator() throws Exception {
          iter.reset(inputBytes);
          Model m2 = iter.read(modelTypeLiteral);
  
          fastjson();
          for (int i = 0; i < 5; ++i) {
              long startMillis = System.currentTimeMillis();
              fastjson();
              long millis = System.currentTimeMillis() - startMillis;
              System.out.println("fastjson : " + millis);
          }
  
  //        jsoniterator();
  //        for (int i = 0; i < 5; ++i) {
  //            long startMillis = System.currentTimeMillis();
  //            jsoniterator();
  //            long millis = System.currentTimeMillis() - startMillis;
  //            System.out.println("jsoniterator : " + millis);
  //        }
      }
  
      private void jsoniterator() throws java.io.IOException {
          for (int i = 0; i < COUNT; ++i){
              iter.reset(inputBytes);
              Model model2 = iter.read(modelTypeLiteral);
          }
      }
  
      private void fastjson() throws java.io.IOException {
          for (int i = 0; i < COUNT; ++i){
              Model model2 = JSON.parseObject(input, Model.class);
          }
      }
  
      public static class Model {
          public int id;
          public String name;
      }
  
      public static Object decode_(JsonIterator iter) throws java.io.IOException {
          if (iter.readNull()) {
              com.jsoniter.CodegenAccess.resetExistingObject(iter);
              return null;
          }
          JsonIteratorImageTest.Model obj = (com.jsoniter.CodegenAccess.existingObject(iter) == null ? new JsonIteratorImageTest.Model() : (JsonIteratorImageTest.Model)com.jsoniter.CodegenAccess.resetExistingObject(iter));
          if (!com.jsoniter.CodegenAccess.readObjectStart(iter)) { return obj; }
          switch (com.jsoniter.CodegenAccess.readObjectFieldAsHash(iter)) {
              case 926444256:
                  obj.id = (int)iter.readInt();
                  break;
              case -1925595674:
                  obj.name = (String)iter.readString();
                  break;
              default:
                  iter.skip();
          }
          while (com.jsoniter.CodegenAccess.nextToken(iter) == ',') {
              switch (com.jsoniter.CodegenAccess.readObjectFieldAsHash(iter)) {
                  case 926444256:
                      obj.id = (int)iter.readInt();
                      continue;
                  case -1925595674:
                      obj.name = (String)iter.readString();
                      continue;
              }
              iter.skip();
          }
          return obj;
      }
  
  
  }
  