SQLAlchemy 比 Psycopg2 更快。我的基准有什么问题?

SQLAlchemy Faster Than Psycopg2. What's Wrong with My Benchmark?

首先,我创建了一个包含 5 列的 table:

CREATE TABLE table1
(
  a integer,
  b character varying,
  c character varying,
  d numeric,
  e numeric
)

其次,我将 10 万行添加到 table

https://gist.github.com/ericsalim/1d12628826195b52c5d282c2326f5e00

第三,我select所有行都使用Psycopg2和SQLAlchemy

Psycopg2 的结果

SQLAlchemy 的结果:

作为 Psycopg2 之上的 ORM 层的 SQLAlchemy 怎么可能比 Psycopg2 本身更快?我的代码有问题吗?

这是DictCursor的开销。将其切换为使用标准游标和整数索引会导致 psycopg2 表现出色。我想 SQLAlchemy 使用不同的、更有效的方法来支持字符串索引。但除了学术好奇心之外,我不会担心两者之间的性能差异——关注哪个对你更有效率。在大多数真实场景中,你会受到 I/O 的约束,差异很小,无关紧要。