4 ms·
FWIW, the non-parallel version yields a profile like: - 25.69% postgres jitted-24373-18.so [.] evalexpr_3_3 - 96.00% evalexpr_3_3
by anarazel 8y ago
FWIW, the non-parallel version yields a profile like:
- 25.69% postgres jitted-24373-18.so [.] evalexpr_3_3
- 96.00% evalexpr_3_3
ExecAgg
+ 2.89% __isnan
- 12.15% postgres jitted-24373-16.so [.] evalexpr_3_0
- 99.38% evalexpr_3_0
ExecSeqScan
ExecAgg
+ 0.56% ExecSeqScan
- 11.74% postgres postgres [.] heap_getnext
99.83% heap_getnext
ExecSeqScan
ExecAgg
+ 9.31% postgres postgres [.] ExecSeqScan
+ 7.66% postgres libc-2.27.so [.] __memmove_avx_unaligned_erms
+ 5.61% postgres postgres [.] heapgetpage
+ 5.36% postgres postgres [.] ExecAgg
+ 5.35% postgres postgres [.] MemoryContextReset
+ 4.11% postgres postgres [.] HeapTupleSatisfiesMVCC
+ 3.53% postgres postgres [.] ExecStoreTuple
+ 2.55% postgres postgres [.] hash_search_with_hash_value
+ 1.63% postgres libc-2.27.so [.] __isnan
+ 1.16% postgres postgres [.] CheckForSerializableConflictOut
so it's pretty clear that there's plenty additional work can be done to improve the generated code (it's pretty crappy right now), and that there's potential around improving things due to batching (mainly for increased cache efficiency).