Re: Performance degradation in commit ac1d794
От | Andres Freund |
---|---|
Тема | Re: Performance degradation in commit ac1d794 |
Дата | |
Msg-id | 20160317151749.7yvv4fsd5rfkqc3t@alap3.anarazel.de обсуждение исходный текст |
Ответ на | Re: Performance degradation in commit ac1d794 (Robert Haas <robertmhaas@gmail.com>) |
Ответы |
Re: Performance degradation in commit ac1d794
|
Список | pgsql-hackers |
On 2016-03-17 09:01:36 -0400, Robert Haas wrote: > > * Right now the caller has to allocate the WaitEvents he's waiting for > > locally (likely on the stack), but we also could allocate them as part > > of the WaitEventSet. Not sure if that'd be a benefit. > > I'm not seeing this. What do you mean? Right now, do use a WaitEventSet you'd do something like WaitEvent event; ModifyWaitEvent(FeBeWaitSet, 0, waitfor, NULL); WaitEventSetWait(FeBeWaitSet, 0 /* no timeout */, &event, 1); i.e. use a WaitEvent on the stack to receive the changes. If you wanted to get more changes than just one, you could end up allocating a fair bit of stack space. We could instead allocate the returned events as part of the event set, and return them. Either by returning a NULL terminated array, or by continuing to return the number of events as now, and additionally return the event data structure via a pointer. So the above would be WaitEvent *events; int nevents; ModifyWaitEvent(FeBeWaitSet, 0, waitfor, NULL); nevents = WaitEventSetWait(FeBeWaitSet, 0 /* no timeout */, events, 10); for (int off = 0; off <= nevents; nevents++) ; // stuff Andres
В списке pgsql-hackers по дате отправления: