谁说的Mingw-gcc编译出来的PostgreSQL比MSVC 性能差? 用事实说话

在Windows上构建性能的PostgreSQL

Jim Mlodgenski 二月17,2016/1 Comment / in ,Jim PostgreSQL@BigSQL.OpenSCG,

原文链接

在PostgreSQL 9.1之前,添加额外的功能,如数据类型是非标准的和尴尬,但9.1带来了扩展。通过添加扩展以及诸如外部数据包装器的管道,在过去几年中使用扩展已经爆炸。这对于在Linux或类似类型环境中使用PostgreSQL的人来说是很好的,但是Windows中的人已经很幸运了。大多数人需要希望他们想要使用的扩展是流行的,以致于熟练的Windows构建环境的人决定在Windows上发布扩展。它只是没有那么简单,Linux,你只是运行“make install”。

多年来,已经有能力使用Mingw项目复制Windows上的Linux构建体验,但是历史上,生成的二进制文件比Microsoft编译器生成的二进制文件要慢得多。自从我最后在Windows上使用兼容性,我惊喜地发现,开源构建工具已经赶上了商业工具,在某些方面超越了他们。

要检查从编译器生成的二进制文件的性能,我尝试了几个CPU密集型测试。 第一个只是一个SELECT only pgbench测试。 第二个是运行随机数的平方根,然后对比排序结果。

对于使用Microsoft Visual Studio构建的Windows二进制文件,我使用了PostgreSQL[社区网站] (http://www.postgresql.org/download/windows/) PostgreSQL Windows安装程序。 Mingw-w64版本来自bigsql.org网站,网址为

http://www.bigsql.org/se/postgresql/packages.jsp

2个二进制文件的版本信息如下。

test=# select version();
 version
-------------------------------------------------------------
 PostgreSQL 9.5.1, compiled by Visual C++ build 1800, 64-bit
(1 row)

test=# select version();
 version
---------------------------------------------------------------------------------------------------------
 PostgreSQL 9.5.1 on x86_64-pc-mingw64, compiled by gcc.exe (Rev5, Built by MSYS2 project) 4.9.2, 64-bit
(1 row)

对于这些测试,对postgresql.conf文件的唯一调整是将shared_buffers设置为2GB。所有其他设置保留默认值。 仅使用以下命令执行SELECT only pgbench测试:

pgbench -n -S -c 10 -t 100000 -U postgres test
MSVC
34246 TPS
GCC
34706 TPS

这是一个小1.3%的性能改进。这不是一个突破性的收获,但是gcc内置的二进制文件一直更快。 第二个测试是更多的CPU密集型运行以下查询: ··· select sqrt((random() * g)::numeric) from generate_series(1, 1000) g order by 1; ···

这被放在一个文本文件中,并使用以下命令运行pgbench: ··· pgbench.exe -n -f test.sql -c 8 -t 10000 -U postgres test MSVC 610 TPS GCC 634 TPS ···

这导致3.8%的更大的性能增益。 我开始这个测试,试图找到一个更简单的方法来构建Windows上的扩展,希望没有太多的性能损失,但最终发现,更容易的方式,实际上是更快一点点。我正在考虑它的时间来挖掘这些专有的构建工具,并坚持使用开源工具。

转载于:https://my.oschina.net/innovation/blog/783457

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值