Re: PostgreSQLv14 TPC-H performance GCC vs Clang

From: arjun shetty <arjunshetty955(at)gmail(dot)com>
To: Imre Samu <pella(dot)samu(at)gmail(dot)com>
Cc: Tomas Vondra <tomas(dot)vondra(at)enterprisedb(dot)com>, "pgsql-performance(at)lists(dot)postgresql(dot)org" <pgsql-performance(at)lists(dot)postgresql(dot)org>
Subject: Re: PostgreSQLv14 TPC-H performance GCC vs Clang
Date: 2022-01-18 14:22:18
Message-ID: CAMowxTuSM=hWO+9obzBikWjEECGzBb9j_yxkAig+UTXFU9CUaQ@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-performance

Hi All,

I checked with LLVM/CLang 14.0 on arch x86-64-O3 in the Mac/AMD EPYC
environment , but I see GCC performs better than Clang14.
Clang14-https://github.com/llvm/llvm-project(main branch and pull or
commitID:3f3fe4a5cfa1797..)
[image: image.png]
pre analysis GCC vs Clang
(1) GCC more inlined functionality compared to Clang in PostgreSQL
(2) in few functions GCC are not inlined but Clang consider inline
postgresqlv14/src/include/utlis/float.h: float8_mul(),float8_div
(arithmetic functions).v
postgresqlv14/src/backend/adt/geo_ops.c : point_xxx().
(3) GCC performs better than clang on datatype Int128(need to cross check
on instruction level/assembly code on Hardware).
(4) as point(2) without inline(remove inline in source code ) on those
functions in file's float.h and geo_ops.c and observed performance
improvement 6% compared to within inline in Clang.

regards,
Arjun

On Fri, Dec 10, 2021 at 11:51 PM Imre Samu <pella(dot)samu(at)gmail(dot)com> wrote:

> > GCC vs Clang
>
> related:
> As I see - with LLVM/Clang 14.0 ( X86_64 -O3 ) ~12% performance increase
> expected with the new optimisation ( probably adapted from gcc )
> - https://twitter.com/djtodoro/status/1466808507240386560
> -
> https://www.phoronix.com/scan.php?page=news_item&px=LLVM-Clang-14-Hoist-Load
>
> regards,
> Imre
>
>
>
> arjun shetty <arjunshetty955(at)gmail(dot)com> ezt írta (időpont: 2021. nov.
> 16., K, 11:10):
>
>> Yes, currently focusing affects queries as well.
>> In meanwhile on analysis(hardware level) and sample examples noticed
>> 1. GCC performance better than Clang on int128 .
>> 2. Clang performance better than GCC on long long
>> the reference example
>> https://stackoverflow.com/questions/63029428/why-is-int128-t-faster-than-long-long-on-x86-64-gcc
>>
>> 3.GCC enabled with “ fexcess-precision=standard” (precision cast for
>> floating point ).
>>
>> Is these 3 points can make performance difference GCC vs Clang in
>> PostgreSQLv14 in Apple/AMD/()environment(intel environment need to check).
>> In these environment int128 enabled wrt PostgreSQLv14.
>>
>> On Friday, November 5, 2021, Tomas Vondra <tomas(dot)vondra(at)enterprisedb(dot)com>
>> wrote:
>>
>>> Hi,
>>>
>>> IMO this thread provides so little information it's almost impossible to
>>> answer the question. There's almost no information about the hardware,
>>> scale of the test, configuration of the Postgres instance, the exact build
>>> flags, differences in generated asm code, etc.
>>>
>>> I find it hard to believe merely switching from clang to gcc yields 22%
>>> speedup - that's way higher than any differences we've seen in the past.
>>>
>>> In my experience, the speedup is unlikely to be "across the board".
>>> There will be a handful of affected queries, while most remaining queries
>>> will be about the same. In that case you need to focus on those queries,
>>> see if the plans are the same, do some profiling, etc.
>>>
>>>
>>> regards
>>>
>>> --
>>> Tomas Vondra
>>> EnterpriseDB: http://www.enterprisedb.com
>>> The Enterprise PostgreSQL Company
>>>
>>

In response to

Browse pgsql-performance by date

  From Date Subject
Next Message Mladen Gogala 2022-01-18 17:13:27 Unique constraint blues
Previous Message T T 2022-01-13 01:47:49 PGBench connection issue with -C option only