{"id":19563122,"url":"https://github.com/fasterxml/jvm-json-benchmark","last_synced_at":"2025-08-23T15:42:37.146Z","repository":{"id":8327032,"uuid":"9879439","full_name":"FasterXML/jvm-json-benchmark","owner":"FasterXML","description":"Performance benchmark suite that compares data-binding (JSON\u003c-\u003ePOJO) performance of Java JSON libraries. Uses Japex benchmark framework for running tests and visualizing results.","archived":false,"fork":false,"pushed_at":"2024-06-12T02:20:31.000Z","size":5411,"stargazers_count":7,"open_issues_count":0,"forks_count":7,"subscribers_count":5,"default_branch":"master","last_synced_at":"2025-04-27T00:32:11.591Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/FasterXML.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2013-05-06T04:36:48.000Z","updated_at":"2024-06-12T02:20:35.000Z","dependencies_parsed_at":"2025-04-27T00:32:08.207Z","dependency_job_id":"c07f780e-ec33-489f-b3c4-d2f424d91369","html_url":"https://github.com/FasterXML/jvm-json-benchmark","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/FasterXML/jvm-json-benchmark","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/FasterXML%2Fjvm-json-benchmark","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/FasterXML%2Fjvm-json-benchmark/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/FasterXML%2Fjvm-json-benchmark/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/FasterXML%2Fjvm-json-benchmark/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/FasterXML","download_url":"https://codeload.github.com/FasterXML/jvm-json-benchmark/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/FasterXML%2Fjvm-json-benchmark/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":271755034,"owners_count":24815331,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-08-23T02:00:09.327Z","response_time":69,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-11-11T05:16:37.916Z","updated_at":"2025-08-23T15:42:37.112Z","avatar_url":"https://github.com/FasterXML.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Benchmark for comparing JSON performance on Java platform\n\nThis project contains benchmark suite for comparing performance of JSON-to/from-POJOs\ndata binding, using various Java JSON libraries.\n\n## Basics\n\nLibraries included are mostly ones that can do fully automatic data-binding; but in some\ncases we may also include ones that only implement Tree-based processing, in which case\nadditional manual coding is required.\nWe may also include tree-based variants of data-binding - capable libraries in cases where that makes sense.\nIn all cases we indicate processing-module uses (which indicates level-of-effort for using\nlibrary for data-binding use cases).\n\n## Test framework\n\nTests use Japex, since it\n\n1. Is designed for full benchmark runs (not just micro-benchmarks), and\n2. It provides full JVM isolation between tests, to avoid Hot-Spot problems wrt multiple competing implementations\n\nSome attempts were made to use Caliper, which has some promising features; but in the end\nJapex proved bit more mature for this specific use case.\nBut we may try out other frameworks in future.\n\n## Results\n\nCan be found from [Wiki](../../wiki)\n\n## Libraries included\n\n### Fastjson\n\n* Home page: https://github.com/alibaba/fastjson\n* Version tested: 1.1.30\n\nTested with default settings; except configured NOT to check for cyclic dependencies (as that\nadds overhead).\nLibrary apparently can not take streaming input, so code has to read all content in; this\nis done using simple copy (which gives slight advantage compared to having to do it the\nusual way); but should not change results drastically.\n\n### Flex-JSON\n\n* Home page: http://sourceforge.net/projects/flexjson\n* Version tested: 2.1\n\nNOTE: version 3.0 appears to be available, but I could not make it work.\n2.1 appears to be the official publicly available version.\n\n### Genson\n\n* Home page: http://code.google.com/p/genson/\n* Version tested: 0.94\n\nSimilar to GSON, need to use JDK `InputStreamReader`. In addition, output only as `String`, which\nis then written using `OutputStreamWriter`.\n\n### GSON\n\n* Home page: http://code.google.com/p/google-gson/)\n* Version tested: 2.2\n\nTested in basic data-binding mode, with default configuration.\n\nGSON does not take `InputStream` or `OutputStream`,\nso input is read using standard JDK `InputStreamReader` (with UTF-8)\nand output `OutputStreamWriter`.\n\n### Jackson\n\n* Home page: https://github.com/FasterXML/jackson\n* Version tested: 2.2\n\nTested in basic data-binding mode, with default configuration.\n\nNote that tests does NOT use [Afterburner](https://github.com/FasterXML/jackson-module-afterburner) module (which could increase speed by 30-40%)\nas the intent is to compare default implementations, configurations.\nA separate test driver may be added in future to test such variation.\n\n### JSON-tools\n\n* Home page: http://jsontools.berlios.de/\n* Version tested: 1.7\n\nSeems to require two-phase process for reading (with `JSONParser` from `InputStream`, into `JSONValue`;\nthen mapped using `JSONMapper`.\nSimilarly writing has to be done using an intermediate `String` -- inefficient, but that's what API expects.\n\n## Libraries not included\n\nFollowing libraries were considered for inclusion, but had to be excluded for some reason.\n\n### Json-lib\n\n* Home page: http://json-lib.sourceforge.net\n* Version: 2.4\n\nThis library is sort-of kind-of capable of data-binding, but requires lots of additional configuration and\nregistration of types (see `JsonLibJsonDatabind.java` of [JVM-serializers](https://github.com/eishay/jvm-serializers)\nfor details); so it seems more hassle than worth.\nPerformance, as per jvm-serializers, also does not rank anywhere near top of Java JSON libraries, so this does not seem like a big omission.\n\n### Json-smart\n\n* Home page: http://code.google.com/p/json-smart/\n* Version tested: 2.0-RC2\n\nSimply, does not work. Although I found a way that should allow Bean conversions, code just mysteriously\nfails with a class-loading error.\n\nIf anyone can suggest a fix or work-around, I will be happy to include this in tests as well.\nResults from sources other than project home page suggest not-so-stellar performance (like jvm-serializers).\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffasterxml%2Fjvm-json-benchmark","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ffasterxml%2Fjvm-json-benchmark","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffasterxml%2Fjvm-json-benchmark/lists"}