Skip to content

Commit

Permalink
opt: shrink the poll event list when it need to
Browse files Browse the repository at this point in the history
  • Loading branch information
panjf2000 committed Jan 30, 2021
1 parent 9d86c92 commit 1587638
Show file tree
Hide file tree
Showing 5 changed files with 19 additions and 5 deletions.
4 changes: 3 additions & 1 deletion internal/netpoll/epoll.go
Original file line number Diff line number Diff line change
Expand Up @@ -138,7 +138,9 @@ func (p *Poller) Polling(callback func(fd int, ev uint32) error) error {
}

if n == el.size {
el.increase()
el.expand()
} else if n < el.size>>1 {
el.shrink()
}
}
}
Expand Down
7 changes: 6 additions & 1 deletion internal/netpoll/epoll_events.go
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,12 @@ func newEventList(size int) *eventList {
return &eventList{size, make([]unix.EpollEvent, size)}
}

func (el *eventList) increase() {
func (el *eventList) expand() {
el.size <<= 1
el.events = make([]unix.EpollEvent, el.size)
}

func (el *eventList) shrink() {
el.size >>= 1
el.events = make([]unix.EpollEvent, el.size)
}
4 changes: 3 additions & 1 deletion internal/netpoll/kqueue.go
Original file line number Diff line number Diff line change
Expand Up @@ -136,7 +136,9 @@ func (p *Poller) Polling(callback func(fd int, filter int16) error) error {
}

if n == el.size {
el.increase()
el.expand()
} else if n < el.size>>1 {
el.shrink()
}
}
}
Expand Down
7 changes: 6 additions & 1 deletion internal/netpoll/kqueue_events.go
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,12 @@ func newEventList(size int) *eventList {
return &eventList{size, make([]unix.Kevent_t, size)}
}

func (el *eventList) increase() {
func (el *eventList) expand() {
el.size <<= 1
el.events = make([]unix.Kevent_t, el.size)
}

func (el *eventList) shrink() {
el.size >>= 1
el.events = make([]unix.Kevent_t, el.size)
}
2 changes: 1 addition & 1 deletion ringbuffer/ring_buffer.go
Original file line number Diff line number Diff line change
Expand Up @@ -371,7 +371,7 @@ func (r *RingBuffer) Reset() {
r.r, r.w = 0, 0

// Shrink the internal buffer for saving memory.
newCap := r.size / 2
newCap := r.size >> 1
newBuf := make([]byte, newCap)
r.buf = newBuf
r.size = newCap
Expand Down

0 comments on commit 1587638

Please sign in to comment.