content: package com.alibaba.fastjson2.benchmark.fastcode;
  
  import com.alibaba.fastjson2.JSON;
  import com.alibaba.fastjson2.JSONWriter;
  import com.fasterxml.jackson.databind.ObjectMapper;
  import com.fasterxml.jackson.databind.SerializationFeature;
  import org.openjdk.jmh.annotations.Benchmark;
  import org.openjdk.jmh.annotations.Mode;
  import org.openjdk.jmh.infra.Blackhole;
  import org.openjdk.jmh.runner.Runner;
  import org.openjdk.jmh.runner.RunnerException;
  import org.openjdk.jmh.runner.options.Options;
  import org.openjdk.jmh.runner.options.OptionsBuilder;
  
  import java.math.BigDecimal;
  import java.util.concurrent.TimeUnit;
  
  public class BigDecimalWrite {
      static final ObjectMapper mapperPlain;
      static final ObjectMapper mapper;
      static {
          mapperPlain = new ObjectMapper();
          mapperPlain.configure(SerializationFeature.WRITE_BIGDECIMAL_AS_PLAIN, true);
  
          mapper = new ObjectMapper();
      }
  
      @Benchmark
      public void fastjson2(Blackhole bh) throws Throwable {
          bh.consume(JSON.toJSONString(decimals));
      }
  
      @Benchmark
      public void fastjson2Plain(Blackhole bh) throws Throwable {
          bh.consume(JSON.toJSONString(decimals, JSONWriter.Feature.WriteBigDecimalAsPlain));
      }
  
      @Benchmark
      public void jackson(Blackhole bh) throws Throwable {
          bh.consume(mapper.writeValueAsString(decimals));
      }
  
      @Benchmark
      public void jacksonPlain(Blackhole bh) throws Throwable {
          bh.consume(mapperPlain.writeValueAsString(decimals));
      }
  
      public static void main(String[] args) throws RunnerException {
          Options options = new OptionsBuilder()
                  .include(BigDecimalWrite.class.getName())
                  .mode(Mode.Throughput)
                  .timeUnit(TimeUnit.MILLISECONDS)
                  .warmupIterations(1)
                  .forks(1)
                  .build();
          new Runner(options).run();
      }
  
      static final BigDecimal[] decimals;
      static String[] strings = {
              "567988.735",
              "-811227.824",
              "17415.508",
              "668069.440",
              "77259.887",
              "733032.058",
              "44402.415",
              "99328.975",
              "759431.827",
              "651998.851",
              "595127.733",
              "872747.476",
              "976748.491",
              "63991.314",
              "436269.240",
              "509959.652",
              "648017.400",
              "86751.384",
              "800272.803",
              "639564.823",
              "88635.267",
              "409446.022",
              "228804.504",
              "640130.935",
              "941728.712",
              "668647.192",
              "746452.938",
              "88000.517",
              "175690.681",
              "442989.476",
              "714895.680",
              "271997.015",
              "784747.089",
              "357574.796",
              "497020.456",
              "361937.673",
              "731252.665",
              "328984.250",
              "402177.572",
              "511251.084",
              "290164.359",
              "844655.633",
              "238646.400",
              "209082.573",
              "800429.012",
              "612647.616",
              "434125.300",
              "308113.583",
              "481771.315",
              "394124.322",
              "818335.777",
              "339450.066",
              "334937.770",
              "304400.447",
              "533111.800",
              "743212.248",
              "328471.243",
              "193255.426",
              "892754.606",
              "951287.847",
              "272599.471",
              "262161.834",
              "290162.866",
              "320829.094",
              "412294.692",
              "521239.528",
              "841545.834",
              "252217.529",
              "271679.523",
              "291849.519",
              "563712.454",
              "374797.778",
              "467001.597",
              "760154.498",
              "426363.937",
              "706653.732",
              "578078.926",
              "460563.960",
              "158475.411",
              "655223.901",
              "263773.087",
              "169458.408",
              "324783.323",
              "331908.388",
              "64351.359",
              "262647.243",
              "573084.414",
              "55618.851",
              "742849.227",
              "726686.140",
              "468504.798",
              "983562.626",
              "754044.022",
              "239351.762",
              "72823.402",
              "517170.424",
              "759187.394",
              "624425.622",
              "742522.595",
              "713384.831"
      };
      static {
          decimals = new BigDecimal[strings.length];
          init();
      }
  
      public static void init() {
          for (int i = 0; i < strings.length; i++) {
              decimals[i] = new BigDecimal(strings[i]);
          }
      }
  }
  