]> git.ipfire.org Git - thirdparty/psycopg.git/commitdiff
perf(c): only use __cinit__ in adaptation classes
authorDaniele Varrazzo <daniele.varrazzo@gmail.com>
Tue, 25 Oct 2022 23:25:34 +0000 (01:25 +0200)
committerDaniele Varrazzo <daniele.varrazzo@gmail.com>
Thu, 27 Oct 2022 00:11:37 +0000 (02:11 +0200)
There is less overhead creating the objects.

psycopg_c/psycopg_c/_psycopg/adapt.pyx
psycopg_c/psycopg_c/types/datetime.pyx
psycopg_c/psycopg_c/types/string.pyx

index 8ea7910e95ea2f446134a57586af706db34dba3c..518363c858f89dd7b7547658869b1a09e66c9637 100644 (file)
@@ -35,7 +35,7 @@ cdef class CDumper:
 
     oid = oids.INVALID_OID
 
-    def __init__(self, cls, context: Optional[AdaptContext] = None):
+    def __cinit__(self, cls, context: Optional[AdaptContext] = None):
         self.cls = cls
         conn = context.connection if context is not None else None
         self._pgconn = conn.pgconn if conn is not None else None
@@ -148,7 +148,7 @@ cdef class CLoader:
     cdef public libpq.Oid oid
     cdef pq.PGconn _pgconn
 
-    def __init__(self, int oid, context: Optional[AdaptContext] = None):
+    def __cinit__(self, int oid, context: Optional[AdaptContext] = None):
         self.oid = oid
         conn = context.connection if context is not None else None
         self._pgconn = conn.pgconn if conn is not None else None
index 50e5e1f2839b89f5be776cc498e67f40e05d1e10..51e7dcf9be6d2239efd4143a82c42908b72cc898 100644 (file)
@@ -295,8 +295,7 @@ cdef class TimedeltaDumper(CDumper):
     oid = oids.INTERVAL_OID
     cdef int _style
 
-    def __init__(self, cls, context: Optional[AdaptContext] = None):
-        super().__init__(cls, context)
+    def __cinit__(self, cls, context: Optional[AdaptContext] = None):
 
         cdef const char *ds = _get_intervalstyle(self._pgconn)
         if ds[0] == b's':  # sql_standard
@@ -353,8 +352,7 @@ cdef class DateLoader(CLoader):
     format = PQ_TEXT
     cdef int _order
 
-    def __init__(self, oid: int, context: Optional[AdaptContext] = None):
-        super().__init__(oid, context)
+    def __cinit__(self, oid: int, context: Optional[AdaptContext] = None):
 
         cdef const char *ds = _get_datestyle(self._pgconn)
         if ds[0] == b'I':  # ISO
@@ -549,8 +547,7 @@ cdef class TimestampLoader(CLoader):
     format = PQ_TEXT
     cdef int _order
 
-    def __init__(self, oid: int, context: Optional[AdaptContext] = None):
-        super().__init__(oid, context)
+    def __cinit__(self, oid: int, context: Optional[AdaptContext] = None):
 
         cdef const char *ds = _get_datestyle(self._pgconn)
         if ds[0] == b'I':  # ISO
@@ -686,8 +683,7 @@ cdef class TimestampBinaryLoader(CLoader):
 cdef class _BaseTimestamptzLoader(CLoader):
     cdef object _time_zone
 
-    def __init__(self, oid: int, context: Optional[AdaptContext] = None):
-        super().__init__(oid, context)
+    def __cinit__(self, oid: int, context: Optional[AdaptContext] = None):
         self._time_zone = _timezone_from_connection(self._pgconn)
 
 
@@ -697,8 +693,7 @@ cdef class TimestamptzLoader(_BaseTimestamptzLoader):
     format = PQ_TEXT
     cdef int _order
 
-    def __init__(self, oid: int, context: Optional[AdaptContext] = None):
-        super().__init__(oid, context)
+    def __cinit__(self, oid: int, context: Optional[AdaptContext] = None):
 
         cdef const char *ds = _get_datestyle(self._pgconn)
         if ds[0] == b'I':  # ISO
@@ -843,8 +838,7 @@ cdef class IntervalLoader(CLoader):
     format = PQ_TEXT
     cdef int _style
 
-    def __init__(self, oid: int, context: Optional[AdaptContext] = None):
-        super().__init__(oid, context)
+    def __cinit__(self, oid: int, context: Optional[AdaptContext] = None):
 
         cdef const char *ds = _get_intervalstyle(self._pgconn)
         if ds[0] == b'p' and ds[8] == 0:  # postgres
index 53fd30b1bb91318290a8d14cc470a080b71067b3..cae6a4b5f95291fe6fb29ab3eb849c538640efde 100644 (file)
@@ -30,8 +30,7 @@ cdef class _BaseStrDumper(CDumper):
     cdef char *encoding
     cdef bytes _bytes_encoding  # needed to keep `encoding` alive
 
-    def __init__(self, cls, context: Optional[AdaptContext] = None):
-        super().__init__(cls, context)
+    def __cinit__(self, cls, context: Optional[AdaptContext] = None):
 
         self.is_utf8 = 0
         self.encoding = "utf-8"
@@ -111,8 +110,7 @@ cdef class _TextLoader(CLoader):
     cdef char *encoding
     cdef bytes _bytes_encoding  # needed to keep `encoding` alive
 
-    def __init__(self, oid: int, context: Optional[AdaptContext] = None):
-        super().__init__(oid, context)
+    def __cinit__(self, oid: int, context: Optional[AdaptContext] = None):
 
         self.is_utf8 = 0
         self.encoding = "utf-8"