SQLAlchemy比Psycopg2更快。我的基准测试结果有什么不对?

时间:2016-05-22 04:55:47

标签: python postgresql sqlalchemy psycopg2

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

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

其次,我向表中添加了100k行

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

第三,我使用Psycopg2和SQLAlchemy

选择所有行

Psycopg2的结果

  • 查询时间:2839.46800232
  • 转换时间:792.379140854
  • res size:400036
  • 行列表大小:412232

SQLAlchemy的结果:

  • 查询时间:2401.74889565
  • 转换时间:377.213001251
  • res size:412232
  • 行列表大小:412232

作为顶级Psycopg2上的ORM层的SQLAlchemy如何比Psycopg2本身更快?我的代码有问题吗?

1 个答案:

答案 0 :(得分:2)

DictCursor的开销。将其切换为使用标准游标和整数索引会导致psycopg2表现优异。我想SQLAlchemy使用一种不同的,更有效的方法来支持字符串索引。但除了学术上的好奇心,我不会担心两者之间的表现差异 - 专注于哪一点对你来说更有成效。在大多数真实场景中,您将受到I / O限制,并且差异足够小,无关紧要。