Skip to content

jit_optimization

Shaojin Wen edited this page May 12, 2024 · 2 revisions

fastjson 2.0.50版本开始,支持通过全局配置或者JVM启动参数配置JIT,优化生成的代码提升性能。

1. 参数说明

  • disableReferenceDetect 在不需要引用检测的场景,配置这个之后可以减少引用检测的消耗,提升序列化和反序列化的性能

  • disableArrayMapping 缺省对象序列化的映射是ObjectMapping,不需要ArrayMapping,配置这个可以JIT不生产等相关的代码,提升性能

  • disableJSONB 如果不需要使用JSONB格式,配置这个会在JIT时不生成相关代码,提升性能

  • disableAutoType 如果不需要使用AutoType,配置这个会在JIT时不生成相关代码,提升性能

  • disableSmartMatch 如果不需要智能匹配,比如大小写智能匹配,单元素数组作为值识别等,配置这个会在JIT时不生成相关代码,提升性能

2. 配置JVM启动参数

-Dfastjson2.features=disableReferenceDetect,disableArrayMapping,disableJSONB,disableAutoType,disableSmartMatch

3. 调用API配置

public final class JSONFactory {
 
    public static void setDisableReferenceDetect(boolean disableReferenceDetect) {
        JSONFactory.disableReferenceDetect = disableReferenceDetect;
    }

    public static void setDisableArrayMapping(boolean disableArrayMapping) {
        JSONFactory.disableArrayMapping = disableArrayMapping;
    }

    public static void setDisableJSONB(boolean disableJSONB) {
        JSONFactory.disableJSONB = disableJSONB;
    }

    public static void setDisableAutoType(boolean disableAutoType) {
        JSONFactory.disableAutoType = disableAutoType;
    }

    public static void setDisableSmartMatch(boolean disableSmartMatch) {
        JSONFactory.disableSmartMatch = disableSmartMatch;
    }
}