Re: PostgreSQLv14 TPC-H performance GCC vs Clang

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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.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.samu@xxxxxxxxx> 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

regards,
 Imre



arjun shetty <arjunshetty955@xxxxxxxxx> 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 

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.vondra@xxxxxxxxxxxxxxxx> 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

[Postgresql General]     [Postgresql PHP]     [PHP Users]     [PHP Home]     [PHP on Windows]     [Kernel Newbies]     [PHP Classes]     [PHP Books]     [PHP Databases]     [Yosemite]

  Powered by Linux