Em qua., 14 de jul. de 2021 às 22:22, David Rowley <dgrowleyml@gmail.com> escreveu:
On Thu, 15 Jul 2021 at 12:30, Ranier Vilela <ranier.vf@gmail.com> wrote: > > Em qua., 14 de jul. de 2021 às 21:21, David Rowley <dgrowleyml@gmail.com> escreveu: >> But, in v8 there is no additional branch, so no branch to mispredict. >> I don't really see how your explanation fits. > > In v8 the branch occurs at : > + if (ExecGetResultType(outerPlanState(sortstate))->natts == 1)
You do know that branch is in a function that's only executed once during executor initialization, right?
The branch prediction should work better.
I have no idea why it works worse.
I redid all tests:
notebook 8GB RAM 256GB SSD
ubuntu 64 bits (20.04)
clang-12
powerhigh (charger on)
none configuration (all defaults)
HEAD
v6
v7b
v8
v6 vs head
v7b vs v6
v8 vs v7b
Test1
576,868013
940,947236
1090,253859
1016,0443
163,11%
115,87%
93,19%
Test2
184,748363
177,6254
177,346229
178,230258
96,14%
99,84%
100,50%
Test3
410,030055
541,889704
605,843924
534,946166
132,16%
111,80%
88,30%
Test4
153,331752
147,98418
148,010894
147,771155
96,51%
100,02%
99,84%
Test5
268,97555
301,979647
316,928492
300,94932
112,27%
104,95%
94,96%
Test6
234,910125
259,71483
269,851427
260,567637
110,56%
103,90%
96,56%
Test7
142,704153
136,09163
136,802695
136,935709
95,37%
100,52%
100,10%
Test8
498,634855
763,482151
867,350046
804,833884
153,11%
113,60%
92,79%
The values are high here, because now, the tests are made with full power of cpu to all patchs!
I think that more testing is needed with v7b and v8.
Anyway, two functions (ExecSortTuple and ExecSortDatum) are almost equal, maybe not a good idea.