The call overhead of using ctypes vs nanobind/pybind is enormous
https://news.ycombinator.com/item?id=31378277
Even if the number reported there is off, it's not far off because ctypes just calls out to libffi which is known to be the slowest way to do ffi.