New submission from Erlend Egeberg Aasland <erlend.aasl...@innova.no>:
The following optimisations can be applied to _pysqlite_connection_begin(): 1. Return an int instead of a PyObject pointer Per now, we do Py_RETURN_NONE and Py_DECREF(result) if _pysqlite_connection_begin() was successful (normally the case). There's no reason to do this. Let's just it the C way: return -1 on error and 0 if things are ok. 2. Defer error checking till post sqlite3_finalize() Any error code returned by sqlite3_step() will also be returned by sqlite3_finalize() for the same statement. From the SQLite docs: "If the most recent evaluation of statement S failed, then sqlite3_finalize(S) returns the appropriate error code or extended error code." 3. Move _pysqlite_connection_begin() to Modules/_sqlite/cursor.c The single use is in _pysqlite_query_execute() in cursor.c. Moving it makes it possible for the compiler to apply more optimisations. At least so I've heard :) (As a side effect, the namespace will be cleaner.) ---------- messages: 392967 nosy: berker.peksag, erlendaasland, serhiy.storchaka priority: normal severity: normal status: open title: [sqlite3] _pysqlite_connection_begin() optimisations type: performance versions: Python 3.11 _______________________________________ Python tracker <rep...@bugs.python.org> <https://bugs.python.org/issue44042> _______________________________________ _______________________________________________ Python-bugs-list mailing list Unsubscribe: https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com