On 2018-06-26 21:25:54 +0200, Pavel Stehule wrote:
> Hi
>
> I played with it and maybe I got interesting result.
>
> When I played with really big table, then I got IO waits and effect of
> jit_tuple_deforming is near to zero (as expected)
>
> When I played with smaller table under RAM, then I can see positive effect
> of JIT_TD, but only when optimization is active. When optimization was
> false, then JIT_TD has negative slowdown.
>
> Shared buffers 1GB
> table wt .. 100columns, 2M rows, cca 823MB
> set max_parallel_workers to 0;
>
> query:
>
> select sum(c99) from wt;
>
> default (jit active) ... 1853ms
> set jit_tuple_deforming to off .. 1397ms
> set jit off .. 1400ms
>
> == enforced inline ==
> jit_tuple_deforming on .. 1610ms
> jit_tuple_deforming off .. 1420ms
>
> == enforced optimize ==
> jit_tuple_deforming on .. 842ms
> jit_tuple_deforming off .. 1420ms
>
>
> I played with setting and I got the best speed with
>
> jit_inline_above_cost ..some pretty high number
> jit_optimize_above_cost 0
> jit_tuple_deforming on
>
>
> So I am able to see effect of jit_tuple_deforming, and very well, but only
> if optimization is active. When optimization is not active then
> jit_tuple_deforming does slowdown.
>
> So maybe a usage of jit_tuple_deforming can be conditioned by
> jit_optimization?
No, it's definitely useful outside of that. I don't think we should
optimize for one individual query.
Greetings,
Andres Freund