From ba14a17b484123d5c77cb2bbc514d5e71171cd05 Mon Sep 17 00:00:00 2001 From: Stefan Scherfke <stefan@sofa-rockers.org> Date: Tue, 9 Jun 2020 21:36:51 +0200 Subject: [PATCH] Fix issue in the "dump" benchmark --- .../dcbenchmark_dump.json | 2 +- .../dcbenchmark_dump.png | Bin 12417 -> 12421 bytes .../dcbenchmark_dump.py | 2 +- .../dcbenchmark_dump.svg | 42 +++++++++--------- 4 files changed, 23 insertions(+), 23 deletions(-) diff --git a/2020/attrs-dataclasses-pydantic/dcbenchmark_dump.json b/2020/attrs-dataclasses-pydantic/dcbenchmark_dump.json index 928deaa..a7ac7f4 100644 --- a/2020/attrs-dataclasses-pydantic/dcbenchmark_dump.json +++ b/2020/attrs-dataclasses-pydantic/dcbenchmark_dump.json @@ -1 +1 @@ -{"title": "Dumping nested classes", "data": [["Attr", 14.819370643000001, 141.48828125], ["Cattr", 5.908646887, 580.08984375], ["Pydantic", 31.140754903000005, 126.86328125]]} \ No newline at end of file +{"title": "Dumping nested classes", "data": [["Attr", 16.021923801, 141.48828125], ["Cattr", 10.097307512, 126.61328125], ["Pydantic", 33.083023428000004, 126.3828125]]} \ No newline at end of file diff --git a/2020/attrs-dataclasses-pydantic/dcbenchmark_dump.png b/2020/attrs-dataclasses-pydantic/dcbenchmark_dump.png index e8697df87d6cc8db587aa1f401875a0199fb813c..7d91b630563d1c997a3e5f95598e579a0f72c9d7 100644 GIT binary patch literal 12421 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 literal 12417 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 diff --git a/2020/attrs-dataclasses-pydantic/dcbenchmark_dump.py b/2020/attrs-dataclasses-pydantic/dcbenchmark_dump.py index 0ba24fb..68e2f33 100644 --- a/2020/attrs-dataclasses-pydantic/dcbenchmark_dump.py +++ b/2020/attrs-dataclasses-pydantic/dcbenchmark_dump.py @@ -79,7 +79,7 @@ def cattr1(): return converter.structure(DATA, Parent) def run(inst): - return converter.unstructure(inst) + return json.dumps(converter.unstructure(inst)) return prepare, run diff --git a/2020/attrs-dataclasses-pydantic/dcbenchmark_dump.svg b/2020/attrs-dataclasses-pydantic/dcbenchmark_dump.svg index a37e6da..02603c4 100644 --- a/2020/attrs-dataclasses-pydantic/dcbenchmark_dump.svg +++ b/2020/attrs-dataclasses-pydantic/dcbenchmark_dump.svg @@ -27,23 +27,23 @@ z " style="fill:#ffffff;"/> </g> <g id="patch_3"> - <path clip-path="url(#p6f5dec8d20)" d="M 60.91 40.717273 -L 237.254287 40.717273 -L 237.254287 76.591684 + <path clip-path="url(#p39bf6a069a)" d="M 60.91 40.717273 +L 240.371065 40.717273 +L 240.371065 76.591684 L 60.91 76.591684 z " style="fill:#1f77b4;"/> </g> <g id="patch_4"> - <path clip-path="url(#p6f5dec8d20)" d="M 60.91 143.215589 -L 131.220416 143.215589 -L 131.220416 179.09 + <path clip-path="url(#p39bf6a069a)" d="M 60.91 143.215589 +L 174.009624 143.215589 +L 174.009624 179.09 L 60.91 179.09 z " style="fill:#1f77b4;"/> </g> <g id="patch_5"> - <path clip-path="url(#p6f5dec8d20)" d="M 60.91 245.713906 + <path clip-path="url(#p39bf6a069a)" d="M 60.91 245.713906 L 431.471905 245.713906 L 431.471905 281.588316 L 60.91 281.588316 @@ -51,25 +51,25 @@ z " style="fill:#1f77b4;"/> </g> <g id="patch_6"> - <path clip-path="url(#p6f5dec8d20)" d="M 60.91 76.591684 -L 151.292839 76.591684 -L 151.292839 112.466094 + <path clip-path="url(#p39bf6a069a)" d="M 60.91 76.591684 +L 431.471905 76.591684 +L 431.471905 112.466094 L 60.91 112.466094 z " style="fill:#ff7f0e;"/> </g> <g id="patch_7"> - <path clip-path="url(#p6f5dec8d20)" d="M 60.91 179.09 -L 431.471905 179.09 -L 431.471905 214.964411 + <path clip-path="url(#p39bf6a069a)" d="M 60.91 179.09 +L 392.513849 179.09 +L 392.513849 214.964411 L 60.91 214.964411 z " style="fill:#ff7f0e;"/> </g> <g id="patch_8"> - <path clip-path="url(#p6f5dec8d20)" d="M 60.91 281.588316 -L 141.950376 281.588316 -L 141.950376 317.462727 + <path clip-path="url(#p39bf6a069a)" d="M 60.91 281.588316 +L 391.910245 281.588316 +L 391.910245 317.462727 L 60.91 317.462727 z " style="fill:#ff7f0e;"/> @@ -81,10 +81,10 @@ z <defs> <path d="M 0 0 L -3.5 0 -" id="m72475354b7" style="stroke:#000000;stroke-width:0.8;"/> +" id="m5cffc1063c" style="stroke:#000000;stroke-width:0.8;"/> </defs> <g> - <use style="stroke:#000000;stroke-width:0.8;" x="60.91" xlink:href="#m72475354b7" y="76.591684"/> + <use style="stroke:#000000;stroke-width:0.8;" x="60.91" xlink:href="#m5cffc1063c" y="76.591684"/> </g> </g> <g id="text_1"> @@ -152,7 +152,7 @@ z <g id="ytick_2"> <g id="line2d_2"> <g> - <use style="stroke:#000000;stroke-width:0.8;" x="60.91" xlink:href="#m72475354b7" y="179.09"/> + <use style="stroke:#000000;stroke-width:0.8;" x="60.91" xlink:href="#m5cffc1063c" y="179.09"/> </g> </g> <g id="text_2"> @@ -224,7 +224,7 @@ z <g id="ytick_3"> <g id="line2d_3"> <g> - <use style="stroke:#000000;stroke-width:0.8;" x="60.91" xlink:href="#m72475354b7" y="281.588316"/> + <use style="stroke:#000000;stroke-width:0.8;" x="60.91" xlink:href="#m5cffc1063c" y="281.588316"/> </g> </g> <g id="text_3"> @@ -692,7 +692,7 @@ z </g> </g> <defs> - <clipPath id="p6f5dec8d20"> + <clipPath id="p39bf6a069a"> <rect height="304.42" width="389.09" x="60.91" y="26.88"/> </clipPath> </defs> -- GitLab