mirror of
https://github.com/criyle/go-sandbox.git
synced 2025-11-04 14:49:53 +08:00
forkexec: add more benchmark for std fork
This commit is contained in:
parent
7ffa0ff148
commit
4154f44d83
@ -20,10 +20,33 @@ var (
|
||||
)
|
||||
|
||||
func BenchmarkStdFork(b *testing.B) {
|
||||
f := openNull(b)
|
||||
defer f.Close()
|
||||
b.RunParallel(func(pb *testing.PB) {
|
||||
for pb.Next() {
|
||||
pid, err := syscall.ForkExec("/bin/echo", nil, &syscall.ProcAttr{
|
||||
Env: []string{"PATH=/bin"},
|
||||
Env: []string{"PATH=/bin"},
|
||||
Files: []uintptr{f.Fd(), f.Fd(), f.Fd()},
|
||||
})
|
||||
if err != nil {
|
||||
b.Fatal(err)
|
||||
}
|
||||
wait4(pid, b)
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
func BenchmarkStdForkUser(b *testing.B) {
|
||||
f := openNull(b)
|
||||
defer f.Close()
|
||||
b.RunParallel(func(pb *testing.PB) {
|
||||
for pb.Next() {
|
||||
pid, err := syscall.ForkExec("/bin/echo", nil, &syscall.ProcAttr{
|
||||
Env: []string{"PATH=/bin"},
|
||||
Files: []uintptr{f.Fd(), f.Fd(), f.Fd()},
|
||||
Sys: &syscall.SysProcAttr{
|
||||
Cloneflags: syscall.CLONE_NEWUSER,
|
||||
},
|
||||
})
|
||||
if err != nil {
|
||||
b.Fatal(err)
|
||||
|
||||
Loading…
Reference in New Issue
Block a user