Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1jbJst-0001sA-PY for psycopg@arkaria.postgresql.org; Wed, 20 May 2020 08:15:27 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1jbJss-0000WS-Io for psycopg@arkaria.postgresql.org; Wed, 20 May 2020 08:15:26 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1jbJss-0000WK-BM for psycopg@lists.postgresql.org; Wed, 20 May 2020 08:15:26 +0000 Received: from mail-lf1-x135.google.com ([2a00:1450:4864:20::135]) by makus.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.92) (envelope-from ) id 1jbJsm-0000k6-0s for psycopg@postgresql.org; Wed, 20 May 2020 08:15:25 +0000 Received: by mail-lf1-x135.google.com with SMTP id x27so1732051lfg.9 for ; Wed, 20 May 2020 01:15:19 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:from:date:message-id:subject:to; bh=0SnfvUh4D9ela+tddwQWLuWHNcjqbPkhKUZNNL/E7IE=; b=s7t7RGGgtCajWNsJiX80LJNLIzLFhNxmF1A99NBkrz4e5lqmiJD+LWdPby2RK+Zose wUfl7lNMOfBNho0wVqFU/A3A9ulc6buYtIqgaOHJ9yroyjzQxXs7WzaOmk6WbSMcxIRo /gMfoT4O8xsVGgpnZrjfNf2iH+RysxagJ/jgE5vHkp7QavYr9YGrBJUOYQMEFQKdsfOw m0KpMV/tBDQLFXdL5twCs01qPD1hMrf4Qbphxo/4WupTJAVEnhgvgMRmTWeSS0e5glQr pKNGOWek6A1LQqj1sJwP6+5Gzwt2tGVchioV016dEmzJ3IiY/aWIATH7Gk0jhOhACEFT GX8A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:from:date:message-id:subject:to; bh=0SnfvUh4D9ela+tddwQWLuWHNcjqbPkhKUZNNL/E7IE=; b=DMJN+f9pbqjdCcOxVexfjyv7tXuX+1do1K/VL6uZBXrMvPOCKB+ustVGkKFW7lvhsb fPlaiLqx1mOcC2TbXFsznaA22F630AnSsq/L87m44s0D3cNs4EXQBqL0Nkuvf/vW2EnI RHeAfH814ngn2E5JqS0j0htoHHrLTNKIJddZbQr9BQjoMeIiJ2LXY2Fk9Diu0XjyYTr/ 68YZMqlgmAfdsbnJpIkUeSIqaZN5hDJ4saVdK8uQydFaeYT0nvrocyKHKe5YxZ/h830W r1jMGJ4Fj8qFiAlNCDrYTAl4FgfZaAXJXeqcal04SArDaKhUZ7KtcW/V9KdA5Qoeeq4b 7WRw== X-Gm-Message-State: AOAM531DBcwztFfaxnlD5meChftDqhLSdHer+X5mvzRuhc9zV1olGf2s zUl9b0QakOBkWsBvOUz/FHoYsMrSrLLsxyHIgy9Nrk2tWkI= X-Google-Smtp-Source: ABdhPJw667qG339awjHelepzwzXMHme+cCxDUF5bnHiArdvY5FpKDAzgEoVHI0vT1XqcPsJoLJQ0LvYC46h4uk0iV1Y= X-Received: by 2002:a19:644f:: with SMTP id b15mr1984606lfj.28.1589962518021; Wed, 20 May 2020 01:15:18 -0700 (PDT) MIME-Version: 1.0 From: Daniele Varrazzo Date: Wed, 20 May 2020 20:15:04 +1200 Message-ID: Subject: psycopg3 performance article To: psycopg@postgresql.org Content-Type: text/plain; charset="UTF-8" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Precedence: bulk Hello, I did some benchmark on psycopg3 and got a pretty grim picture of how slow a pure Python module is compared to something similar written in C... As per original plan I added an optional C implementation (specifically, written in Cython, to help with boilerplate/refcount) and the result is a sweet 20x speed-up. If you are interested I have a write-up of the profiling/optimization process here: https://www.varrazzo.com/blog/2020/05/19/a-trip-into-optimisation/ Cheers! -- Daniele