From 280a5db9c35e3c1e3d9cdd402f7fc677fd275a15 Mon Sep 17 00:00:00 2001 From: Daniele Varrazzo Date: Sun, 2 May 2021 01:59:55 +0200 Subject: [PATCH] Dumpers ownership dict micro-optimisation Copying is ~10x faster than creating a new dict. --- psycopg3/psycopg3/adapt.py | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/psycopg3/psycopg3/adapt.py b/psycopg3/psycopg3/adapt.py index 5f2773a20..a5501fa48 100644 --- a/psycopg3/psycopg3/adapt.py +++ b/psycopg3/psycopg3/adapt.py @@ -153,15 +153,15 @@ class AdaptersMap(AdaptContext): ): if template: self._dumpers = template._dumpers.copy() - self._own_dumpers = dict.fromkeys(Format, False) - template._own_dumpers = dict.fromkeys(Format, False) + self._own_dumpers = _dumpers_shared.copy() + template._own_dumpers = _dumpers_shared.copy() self._loaders = template._loaders[:] self._own_loaders = [False, False] template._own_loaders = [False, False] self.types = TypesRegistry(template.types) else: self._dumpers = {fmt: {} for fmt in Format} - self._own_dumpers = dict.fromkeys(Format, True) + self._own_dumpers = _dumpers_owned.copy() self._loaders = [{}, {}] self._own_loaders = [True, True] self.types = types or TypesRegistry() @@ -281,8 +281,10 @@ class AdaptersMap(AdaptContext): return cls -global_adapters = AdaptersMap(types=postgres_types) +_dumpers_owned = dict.fromkeys(Format, True) +_dumpers_shared = dict.fromkeys(Format, False) +global_adapters = AdaptersMap(types=postgres_types) Transformer: Type[proto.Transformer] -- 2.47.2