Re: JIT performance question
От | Tobias Gierke |
---|---|
Тема | Re: JIT performance question |
Дата | |
Msg-id | cd19a3f0-7c73-34dc-71e2-be2f69266537@code-sourcery.de обсуждение исходный текст |
Ответ на | Re: JIT performance question (Andres Freund <andres@anarazel.de>) |
Ответы |
Re: JIT performance question
(Andres Freund <andres@anarazel.de>)
|
Список | pgsql-performance |
On 06.03.19 18:42, Andres Freund wrote: > > It's hard to know precisely without running a profile of the > workload. My suspicion is that the bottleneck in this query is the use > of numeric, which has fairly slow operations, including aggregation. And > they're too complicated to be inlined. > > Generally there's definitely advantage in JITing aggregation. > > There's a lot of further improvements on the table with better JIT code > generation, I just haven't gotten around implementing those :( Thanks for the quick response ! I think you're onto something with the numeric type. I replaced it with bigint and repeated my test and now I get a nice 40% speedup (I'm again intentionally ignoring the costs for JIT'ting here as I assume a future PostgreSQL version will have some kind of caching for the generated code): Without JIT: QUERY PLAN -------------------------------------------------------------------------------------------------------------------------- Aggregate (cost=1395000.49..1395000.50 rows=1 width=6240) (actual time=6023.436..6023.436 rows=1 loops=1) Buffers: shared hit=256 read=399744 I/O Timings: read=475.135 -> Seq Scan on test (cost=0.00..420000.00 rows=2000000 width=1560) (actual time=0.035..862.424 rows=2000000 loops=1) Buffers: shared hit=256 read=399744 I/O Timings: read=475.135 Planning Time: 0.574 ms Execution Time: 6024.298 ms (8 rows) With JIT: QUERY PLAN -------------------------------------------------------------------------------------------------------------------------- Aggregate (cost=1395000.49..1395000.50 rows=1 width=6240) (actual time=4840.064..4840.064 rows=1 loops=1) Buffers: shared hit=320 read=399680 I/O Timings: read=493.679 -> Seq Scan on test (cost=0.00..420000.00 rows=2000000 width=1560) (actual time=0.090..847.458 rows=2000000 loops=1) Buffers: shared hit=320 read=399680 I/O Timings: read=493.679 Planning Time: 1.414 ms JIT: Functions: 3 Options: Inlining true, Optimization true, Expressions true, Deforming true Timing: Generation 19.747 ms, Inlining 10.281 ms, Optimization 222.619 ms, Emission 362.862 ms, Total 615.509 ms Execution Time: 4862.113 ms (12 rows) Cheers, Tobias
В списке pgsql-performance по дате отправления: