XML to JSON Sergey Svistunov

Convert 1,000,000 person records from XML to JSON as fast as possible.

Input

XML document on STDIN:

<?xml version="1.0" encoding="UTF-8"?>
<persons>
    <person id="1512376">
        <age>30</age>
        <height>169.1</height>
        <married>true</married>
        <phone code="+6"><number>1283603279</number></phone>
        <phone code="+6"><number>1659964668</number></phone>
    </person>
    ...
</persons>

Output

One JSON object per person to STDOUT, preserving order:

{
    "id": 1512376,
    "age": 30,
    "height": 169.1,
    "married": true,
    "phones": [
        {
            "code": "+6",
            "number": 1283603279
        },
        {
            "code": "+6",
            "number": 1659964668
        }
    ]
}

Constraints

  • Preserve the order of persons
  • Omit the phones field if the phone array is empty
  • Maximum number of phones per person is 3
Date AuthorLanguageStatus Score
Dec 30, 2024 15:08Mikhail ShirokovMikhail ShirokovCPPg++13.2.0Success58,148+33.43 RP
Dec 30, 2024 07:35Mikhail ShirokovMikhail ShirokovCPPg++13.2.0Success72,177+45.79 RP
Dec 30, 2024 03:49Mikhail ShirokovMikhail ShirokovCPPg++13.2.0Success107,806+83.32 RP
Dec 29, 2024 12:40Mikhail ShirokovMikhail ShirokovCPPg++13.2.0Error
Dec 29, 2024 12:37Mikhail ShirokovMikhail ShirokovCPPg++13.2.0Error
Dec 29, 2024 12:32Mikhail ShirokovMikhail ShirokovCPPg++13.2.0Error
Dec 29, 2024 12:30Mikhail ShirokovMikhail ShirokovCPPg++13.2.0Error
Dec 29, 2024 12:26Mikhail ShirokovMikhail ShirokovCPPg++13.2.0Error
Dec 29, 2024 12:23Mikhail ShirokovMikhail ShirokovCPPg++13.2.0Error
Dec 28, 2024 17:57Mikhail ShirokovMikhail ShirokovGOgo1.23.4Success1,059,770+9.44 RP
Dec 28, 2024 17:50Mikhail ShirokovMikhail ShirokovCPPg++13.2.0Error
Dec 28, 2024 17:48Mikhail ShirokovMikhail ShirokovCPPg++13.2.0Error
Dec 28, 2024 17:41Mikhail ShirokovMikhail ShirokovCPPg++13.2.0Error
Dec 28, 2024 17:34Mikhail ShirokovMikhail ShirokovCPPg++13.2.0Error
Dec 28, 2024 17:28Mikhail ShirokovMikhail ShirokovCPPg++13.2.0Error
Dec 28, 2024 17:14Mikhail ShirokovMikhail ShirokovCPPg++13.2.0Error
Dec 28, 2024 13:34Mikhail ShirokovMikhail ShirokovCPPg++13.2.0Error
Dec 28, 2024 13:32Mikhail ShirokovMikhail ShirokovCPPg++13.2.0Error
Dec 28, 2024 13:29Mikhail ShirokovMikhail ShirokovCPPg++13.2.0Error
Dec 28, 2024 13:27Mikhail ShirokovMikhail ShirokovCPPg++13.2.0Error
Dec 28, 2024 13:25Mikhail ShirokovMikhail ShirokovCPPg++13.2.0Error
Dec 28, 2024 13:21Mikhail ShirokovMikhail ShirokovCPPg++13.2.0Error
Dec 28, 2024 13:19Mikhail ShirokovMikhail ShirokovCPPg++13.2.0Error
Dec 28, 2024 12:50Mikhail ShirokovMikhail ShirokovCPPg++13.2.0Error
Dec 24, 2024 10:20NoSIMD_C#NoSIMD_C#CSHARP9.0.0Success18,460
Dec 24, 2024 10:16NoSIMD_C#NoSIMD_C#CSHARP9.0.0Success18,474
Dec 24, 2024 10:14NoSIMD_C#NoSIMD_C#CSHARP9.0.0Error
Dec 24, 2024 10:14NoSIMD_C#NoSIMD_C#CSHARP9.0.0Error
Dec 24, 2024 10:02NoSIMD_C#NoSIMD_C#CSHARP9.0.0Success18,385
Dec 24, 2024 09:52NoSIMD_C#NoSIMD_C#CSHARP9.0.0Success18,350
Dec 24, 2024 09:51NoSIMD_C#NoSIMD_C#CSHARP9.0.0Success18,397
Dec 24, 2024 09:50NoSIMD_C#NoSIMD_C#CSHARP9.0.0Success18,420
Dec 24, 2024 09:49NoSIMD_C#NoSIMD_C#CSHARP9.0.0Success18,324
Dec 24, 2024 09:45NoSIMD_C#NoSIMD_C#CSHARP9.0.0Success18,262+1.92 RP
Dec 24, 2024 09:42NoSIMD_C#NoSIMD_C#CSHARP9.0.0Success18,294+7.84 RP
Dec 24, 2024 09:37NoSIMD_C#NoSIMD_C#CSHARP9.0.0Success18,545
Dec 23, 2024 00:28HighloadGPTO1HighloadGPTO1CPPg++13.2.0Success179,563+0.19 RP
Dec 22, 2024 22:07HighloadGPTO1HighloadGPTO1CPPclang++18.1.3Success180,170+55.50 RP
Dec 22, 2024 22:04HighloadGPTO1HighloadGPTO1CPPclang++18.1.3Error
Dec 14, 2024 15:22E SequeiraE SequeiraCPPg++13.2.0Error
Dec 14, 2024 15:20E SequeiraE SequeiraCPPclang++18.1.3Error
Dec 14, 2024 15:15E SequeiraE SequeiraGOgo1.23.3Error
Dec 14, 2024 05:30NoSIMD_C#NoSIMD_C#CPPg++13.2.0Error
Dec 14, 2024 04:22NoSIMD_C#NoSIMD_C#CPPg++13.2.0Error
Dec 14, 2024 04:16NoSIMD_C#NoSIMD_C#CPPg++13.2.0Success85,505
Dec 13, 2024 16:16AnSaAnSaCPPg++13.2.0Success3,632+1.52 RP
Dec 13, 2024 00:10Joad NacerJoad NacerCPPg++9.4.0Success3,172
Dec 13, 2024 00:08Joad NacerJoad NacerCPPg++9.4.0Success3,166+9.95 RP
Dec 12, 2024 18:18Yuriy LyfenkoYuriy LyfenkoCPPg++13.2.0Success3,052+21.40 RP
Dec 11, 2024 07:16NoSIMD_C#NoSIMD_C#CSHARP9.0.0Success18,770
Dec 9, 2024 12:18NoSIMD_C#NoSIMD_C#CSHARP9.0.0Success18,786
Dec 9, 2024 12:11NoSIMD_C#NoSIMD_C#CSHARP9.0.0Success18,783
Dec 9, 2024 11:44NoSIMD_C#NoSIMD_C#CSHARP9.0.0Success19,000
Dec 9, 2024 11:42NoSIMD_C#NoSIMD_C#CSHARP9.0.0Success18,969
Dec 9, 2024 11:38NoSIMD_C#NoSIMD_C#CSHARP9.0.0Success18,886
Dec 9, 2024 11:32NoSIMD_C#NoSIMD_C#CSHARP9.0.0Success18,426+533.34 RP
Dec 9, 2024 08:29NoSIMD_C#NoSIMD_C#CSHARP9.0.0Error
Dec 9, 2024 08:28NoSIMD_C#NoSIMD_C#CSHARP9.0.0Error
Dec 9, 2024 08:25NoSIMD_C#NoSIMD_C#CSHARP9.0.0Error
Dec 9, 2024 08:19NoSIMD_C#NoSIMD_C#CSHARP9.0.0Error
Dec 9, 2024 06:59NoSIMD_C#NoSIMD_C#CSHARP9.0.0Error
Dec 5, 2024 15:10NoSIMD_C#NoSIMD_C#CSHARP9.0.0Error
Dec 5, 2024 12:55NoSIMD_C#NoSIMD_C#CSHARP9.0.0-rc.2Error
Dec 5, 2024 12:55NoSIMD_C#NoSIMD_C#CSHARP9.0.0-rc.2Error
Dec 4, 2024 12:04NoSIMD_C#NoSIMD_C#GOgo1.23.4Success1,066,943+9.37 RP
Nov 29, 2024 18:19E SequeiraE SequeiraGOgo1.23.3Success1,041,432
Nov 29, 2024 18:17E SequeiraE SequeiraGOgo1.23.3Error
Nov 29, 2024 18:12E SequeiraE SequeiraGOgo1.23.3Success930,947+0.03 RP
Nov 29, 2024 18:10E SequeiraE SequeiraGOgo1.23.3Error
Nov 29, 2024 16:04Joad NacerJoad NacerCPPg++9.4.0Success3,176+73.58 RP
Nov 29, 2024 14:47E SequeiraE SequeiraGOgo1.23.3Error
Nov 29, 2024 14:30E SequeiraE SequeiraGOgo1.23.3Success933,945+0.07 RP
Nov 29, 2024 14:28E SequeiraE SequeiraGOgo1.23.3Error
Nov 29, 2024 14:27E SequeiraE SequeiraGOgo1.23.3Error
Nov 29, 2024 14:21E SequeiraE SequeiraGOgo1.23.3Success939,713+10.64 RP
Nov 29, 2024 14:20E SequeiraE SequeiraGOgo1.23.3Error
Nov 29, 2024 14:18E SequeiraE SequeiraGOgo1.23.3Error
Nov 29, 2024 14:15E SequeiraE SequeiraGOgo1.23.3Error
Nov 29, 2024 13:52E SequeiraE SequeiraGOgo1.23.3Error
Nov 24, 2024 17:59E SequeiraE SequeiraCPPclang++18.1.3Error
Nov 23, 2024 17:03E SequeiraE SequeiraCPPclang++18.1.3Error
Nov 23, 2024 17:02E SequeiraE SequeiraCPPclang++18.1.3Error
Nov 23, 2024 17:00E SequeiraE SequeiraCPPclang++18.1.3Error
Nov 19, 2024 17:20NoSIMD_C#NoSIMD_C#CSHARP8.0.10Error
Nov 19, 2024 17:15NoSIMD_C#NoSIMD_C#CSHARP8.0.10Error
Nov 17, 2024 14:07NoSIMD_C#NoSIMD_C#CSHARP9.0.0-rc.2Error
Nov 15, 2024 12:14Andrey TsvetkovAndrey TsvetkovGOgo1.20Error
Nov 15, 2024 11:49Andrey TsvetkovAndrey TsvetkovGOgo1.23.3Error
Nov 15, 2024 11:08Mikhail ShirokovMikhail ShirokovCPPg++13.2.0Error
Nov 10, 2024 11:45NoSIMD_C#NoSIMD_C#CSHARP9.0.0-rc.2Error
Nov 10, 2024 11:44NoSIMD_C#NoSIMD_C#CSHARP9.0.0-rc.2Error
Nov 10, 2024 11:41NoSIMD_C#NoSIMD_C#CSHARP9.0.0-rc.2Error
Nov 9, 2024 12:56Alexander KosachevAlexander KosachevGOgo1.23.3Error
Nov 9, 2024 11:39NoSIMD_C#NoSIMD_C#GOgo1.23.3Error
Sep 8, 2024 15:51Yuriy LyfenkoYuriy LyfenkoCPPg++13.2.0Success3,362
Sep 8, 2024 15:51Yuriy LyfenkoYuriy LyfenkoCPPg++13.2.0Success3,372
Sep 8, 2024 15:47Yuriy LyfenkoYuriy LyfenkoCPPg++13.2.0Success3,385
Sep 8, 2024 15:43Yuriy LyfenkoYuriy LyfenkoCPPg++13.2.0Success3,358
Sep 8, 2024 15:37Yuriy LyfenkoYuriy LyfenkoCPPg++13.2.0Success3,393
Sep 8, 2024 15:33Yuriy LyfenkoYuriy LyfenkoCPPg++13.2.0Success3,342