Skip to content

Instantly share code, notes, and snippets.

@nhumrich
Created August 10, 2017 15:54
Show Gist options
  • Select an option

  • Save nhumrich/3470f075ae1d868f663b162d01a07838 to your computer and use it in GitHub Desktop.

Select an option

Save nhumrich/3470f075ae1d868f663b162d01a07838 to your computer and use it in GitHub Desktop.
asyncpgsa benchmark against aiopg.sa
import asyncio
import aiopg
import aiopg.sa
import asyncpg
import asyncpgsa
import sqlalchemy as sa
pg_tables = sa.Table(
'pg_tables', sa.MetaData(),
sa.Column('schemaname'),
sa.Column('tablename'),
sa.Column('tableowner'),
sa.Column('tablespace'),
sa.Column('hasindexes')
)
query = pg_tables.select().where(pg_tables.c.schemaname == 'pg_catalog')
loop = asyncio.get_event_loop()
async def aio_coro():
await connection.execute(query)
async def apg_coro():
await pgconn.execute(query)
run_aiopg = lambda: loop.run_until_complete(aio_coro())
run_asyncpgsa = lambda: loop.run_until_complete(apg_coro())
pgconn = asyncpg.connect(user='postgres', host='127.0.0.1', password='password', database='postgres', connection_class=asyncpgsa.connection.SAConnection)
pgconn = loop.run_until_complete(pgconn)
engine = loop.run_until_complete(aiopg.sa.create_engine(user='postgres', password='password', host='127.0.0.1', database='postgres'))
connection = loop.run_until_complete(engine.acquire())
run_asyncpgsa()
run_aiopg()
from timeit import timeit
print('aiopg.sa:', timeit(run_aiopg, number=10000))
print('asyncpgsa', timeit(run_asyncpgsa, number=10000))
@nhumrich
Copy link
Copy Markdown
Author

nhumrich commented Dec 4, 2019

Awesome. Thanks!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment