procstat performance enhancement (#7686)

up to 40/120x better performance on FullPattern/Pattern functions
This commit is contained in:
Steven Soroka 2020-06-16 13:46:32 -04:00 committed by GitHub
parent 94fa7067ad
commit 0e6566a20f
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 16 additions and 7 deletions

View File

@ -64,7 +64,7 @@ func (pg *NativeFinder) FullPattern(pattern string) ([]PID, error) {
if err != nil {
return pids, err
}
procs, err := process.Processes()
procs, err := pg.FastProcessList()
if err != nil {
return pids, err
}
@ -81,3 +81,16 @@ func (pg *NativeFinder) FullPattern(pattern string) ([]PID, error) {
}
return pids, err
}
func (pg *NativeFinder) FastProcessList() ([]*process.Process, error) {
pids, err := process.Pids()
if err != nil {
return nil, err
}
result := make([]*process.Process, len(pids))
for i, pid := range pids {
result[i] = &process.Process{Pid: pid}
}
return result, nil
}

View File

@ -4,8 +4,6 @@ package procstat
import (
"regexp"
"github.com/shirou/gopsutil/process"
)
//Pattern matches on the process name
@ -15,7 +13,7 @@ func (pg *NativeFinder) Pattern(pattern string) ([]PID, error) {
if err != nil {
return pids, err
}
procs, err := process.Processes()
procs, err := pg.FastProcessList()
if err != nil {
return pids, err
}

View File

@ -2,8 +2,6 @@ package procstat
import (
"regexp"
"github.com/shirou/gopsutil/process"
)
// Pattern matches on the process name
@ -13,7 +11,7 @@ func (pg *NativeFinder) Pattern(pattern string) ([]PID, error) {
if err != nil {
return pids, err
}
procs, err := process.Processes()
procs, err := pg.FastProcessList()
if err != nil {
return pids, err
}