From: | "Jonathan S(dot) Katz" <jkatz(at)postgresql(dot)org> |
---|---|
To: | Andreas Joseph Krogh <andreas(at)visena(dot)com> |
Cc: | Andres Freund <andres(at)anarazel(dot)de>, Robert Haas <robertmhaas(at)gmail(dot)com>, Alvaro Herrera <alvherre(at)2ndquadrant(dot)com>, PostgreSQL Hackers <pgsql-hackers(at)lists(dot)postgresql(dot)org> |
Subject: | Re: Query is over 2x slower with jit=on |
Date: | 2018-08-22 22:29:58 |
Message-ID: | 2519CF61-3190-4A83-A7A1-0ED3F245518A@postgresql.org |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-hackers |
> On Aug 22, 2018, at 2:58 PM, Andreas Joseph Krogh <andreas(at)visena(dot)com> wrote:
>
> På onsdag 22. august 2018 kl. 20:52:05, skrev Andres Freund <andres(at)anarazel(dot)de <mailto:andres(at)anarazel(dot)de>>:
> On 2018-08-22 19:51:12 +0200, Andreas Joseph Krogh wrote:
> > I thought JITing of prepared queries happended once (in "prepare")
>
> No, it happens when the first JITed function is executed.
>
>
> > so it didn't have to do the JITing every time the query is
> > executed. Isn't the previously generated bytecode usable for
> > subsequent queries?
>
> No, not currently. There's some reasons preventing that (primarily that
> we currently rely on addresses of certain things not to change during
> execution). There's ongoing work to change that, but that's certainly
> not going to be ready for v11.
>
> Greetings,
>
> Andres Freund
>
>
> Ok, thanks for clarifying.
Per earlier note[1] I was able to reproduce this issue with similar results to
Andreas while running 11 Beta 3.
jit = on
https://explain.depesz.com/s/vgzD <https://explain.depesz.com/s/vgzD>
Planning Time: 0.921 ms
JIT:
Functions: 193
Generation Time: 121.595 ms
Inlining: false
Inlining Time: 0.000 ms
Optimization: false
Optimization Time: 58.045 ms
Emission Time: 1201.100 ms
Execution Time: 1628.017 ms
jit = off
https://explain.depesz.com/s/AvZM <https://explain.depesz.com/s/AvZM>
Planning Time: 1.398 ms
Execution Time: 256.473 ms
I increased the the search range I used in the query by 3x, and got these numbers:
jit=on
Planning Time: 0.931 ms
JIT:
Functions: 184
Generation Time: 126.587 ms
Inlining: true
Inlining Time: 98.865 ms
Optimization: true
Optimization Time: 20518.982 ms
Emission Time: 7270.963 ms
Execution Time: 28772.576 ms
jit=off
Planning Time: 1.527 ms
Execution Time: 959.160 ms
So, I would +1 this for open items.
Jonathan
[1] https://www.postgresql.org/message-id/7F838324-064B-4A24-952C-2800CFBD39D6%40postgresql.org <https://www.postgresql.org/message-id/7F838324-064B-4A24-952C-2800CFBD39D6@postgresql.org>
From | Date | Subject | |
---|---|---|---|
Next Message | Andres Freund | 2018-08-22 22:43:20 | Re: JIT compiling with LLVM v12 |
Previous Message | Tom Lane | 2018-08-22 22:15:29 | Re: JIT compiling with LLVM v12 |