diff --git a/internal/socket/messages.go b/internal/socket/messages.go index 9c0e3ef..3452e25 100644 --- a/internal/socket/messages.go +++ b/internal/socket/messages.go @@ -1,38 +1,17 @@ package socket import ( - "github.com/php2go/netpollmux/internal/buffer" "io" "strings" "sync" "sync/atomic" + "github.com/php2go/netpollmux/internal/buffer" "github.com/php2go/netpollmux/internal/writer" ) const bufferSize = 65526 -var ( - buffers = sync.Map{} - assign int32 -) - -//func assignPool(size int) *sync.Pool { -// for { -// if p, ok := buffers.Load(size); ok { -// return p.(*sync.Pool) -// } -// if atomic.CompareAndSwapInt32(&assign, 0, 1) { -// var pool = &sync.Pool{New: func() interface{} { -// return make([]byte, size) -// }} -// buffers.Store(size, pool) -// atomic.StoreInt32(&assign, 0) -// return pool -// } -// } -//} - // Batch interface is used to write batch messages. type Batch interface { // SetConcurrency sets a callback function concurrency to enable auto batch writer for improving throughput. diff --git a/internal/socket/socket.go b/internal/socket/socket.go index 371ebae..6665e32 100644 --- a/internal/socket/socket.go +++ b/internal/socket/socket.go @@ -5,14 +5,11 @@ import ( "errors" "fmt" "net" - "runtime" "strings" "github.com/php2go/netpollmux/netpoll" ) -var numCPU = runtime.NumCPU() - // ErrHandler is the error when the handler is nil var ErrHandler = errors.New("handler is nil") diff --git a/internal/socket/socket_http.go b/internal/socket/socket_http.go index 58650a9..62427fb 100644 --- a/internal/socket/socket_http.go +++ b/internal/socket/socket_http.go @@ -5,11 +5,12 @@ import ( "crypto/tls" "errors" "fmt" - "github.com/php2go/netpollmux/netpoll" "io" "net" "net/http" "time" + + "github.com/php2go/netpollmux/netpoll" ) const ( diff --git a/internal/socket/socket_inproc.go b/internal/socket/socket_inproc.go index 4e242af..695e0a0 100644 --- a/internal/socket/socket_inproc.go +++ b/internal/socket/socket_inproc.go @@ -2,9 +2,10 @@ package socket import ( "crypto/tls" + "net" + "github.com/php2go/netpollmux/internal/inproc" "github.com/php2go/netpollmux/netpoll" - "net" ) // INPROC implements the Socket interface. diff --git a/test/netpoll_benchmark/server.go b/test/netpoll_benchmark/server.go new file mode 100644 index 0000000..8821094 --- /dev/null +++ b/test/netpoll_benchmark/server.go @@ -0,0 +1,37 @@ +package netpoll_benchmark + +import ( + "flag" + "time" + + "github.com/php2go/netpollmux/netpoll" +) + +var addr string +var async bool +var sleep int + +func init() { + flag.StringVar(&addr, "addr", ":9999", "-addr=:9999") + flag.BoolVar(&async, "async", false, "-async=false") + flag.IntVar(&sleep, "sleep", 0, "-sleep=0") + flag.Parse() +} + +func main() { + var handler = &netpoll.DataHandler{ + NoShared: true, + NoCopy: true, + BufferSize: 1024, + HandlerFunc: func(req []byte) (res []byte) { + if sleep > 0 { + time.Sleep(time.Millisecond * time.Duration(sleep)) + } + res = req + return + }, + } + if err := netpoll.ListenAndServe("tcp", addr, handler); err != nil { + panic(err) + } +}