|
|
|
@ -4,6 +4,7 @@ import ( |
|
|
|
"context" |
|
|
|
"context" |
|
|
|
"encoding/base64" |
|
|
|
"encoding/base64" |
|
|
|
"encoding/json" |
|
|
|
"encoding/json" |
|
|
|
|
|
|
|
"flag" |
|
|
|
"fmt" |
|
|
|
"fmt" |
|
|
|
"github.com/bytedance/sonic" |
|
|
|
"github.com/bytedance/sonic" |
|
|
|
"github.com/gorilla/websocket" |
|
|
|
"github.com/gorilla/websocket" |
|
|
|
@ -33,7 +34,7 @@ import ( |
|
|
|
) |
|
|
|
) |
|
|
|
|
|
|
|
|
|
|
|
var ( |
|
|
|
var ( |
|
|
|
benchmarkMode = "deliver" // deliver / groupDeliver
|
|
|
|
benchmarkMode = "deliver" // deliver/group
|
|
|
|
mockUsers = 2000 |
|
|
|
mockUsers = 2000 |
|
|
|
eachUserSend = 100 |
|
|
|
eachUserSend = 100 |
|
|
|
mockNetUsers []*NetUser |
|
|
|
mockNetUsers []*NetUser |
|
|
|
@ -68,8 +69,15 @@ func init() { |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
func main() { |
|
|
|
func main() { |
|
|
|
// benchmark()
|
|
|
|
flag.StringVar(&benchmarkMode, "mode", "deliver", "benchmark mode: deliver/group") |
|
|
|
|
|
|
|
flag.IntVar(&mockUsers, "users", 10, "mock users") |
|
|
|
|
|
|
|
flag.IntVar(&eachUserSend, "send", 10, "each user send msg count") |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if benchmarkMode == "group" { |
|
|
|
benchmarkGroup() |
|
|
|
benchmarkGroup() |
|
|
|
|
|
|
|
} else { |
|
|
|
|
|
|
|
benchmark() |
|
|
|
|
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
func records(ctx context.Context) { |
|
|
|
func records(ctx context.Context) { |
|
|
|
@ -335,7 +343,7 @@ func listen(ctx context.Context, conn *websocket.Conn) { |
|
|
|
} |
|
|
|
} |
|
|
|
header := payload.Header |
|
|
|
header := payload.Header |
|
|
|
|
|
|
|
|
|
|
|
if benchmarkMode == "groupDeliver" { |
|
|
|
if benchmarkMode == "group" { |
|
|
|
atomic.AddInt64(&receiverCounter, 1) |
|
|
|
atomic.AddInt64(&receiverCounter, 1) |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|