pet_home_server/src/server/benchmark_test.go
2026-04-13 20:58:19 +08:00

114 lines
2.3 KiB
Go

package main
import (
"fmt"
"runtime"
"server/game"
"server/game/mod/msg"
"testing"
)
// func TestBenchInit(t *testing.T) {
// f := "wmz00%d"
// for i := 0; i < 10000; i++ {
// UserName := fmt.Sprintf(f, i)
// game.G_GameLogicPtr.Db_AccountInfo.UserName = UserName
// game.G_GameLogicPtr.Db_AccountInfo.UserPassword = "123456"
// if game.G_GameLogicPtr.NewAccountInsertDataToDB() {
// fmt.Printf("UserName:%s\n init success", UserName)
// }
// }
// }
/*
*
cluster 消息处理基准测试
36716 34961 ns/op 1690 B/op 38 allocs/op
*/
func BenchmarkClusterMsg(b *testing.B) {
game.ClusterMgrInit()
runtime.GOMAXPROCS(8)
game.G_getGameLogic()
for i := 0; i < b.N; i++ {
m := &msg.Msg{
HandleType: msg.HANDLE_MOD_PLAYER_LOGIN,
Extra: 0,
}
game.MessageHandle(m)
}
}
func printMemUsage() {
var m runtime.MemStats
runtime.ReadMemStats(&m)
// 输出内存使用情况
fmt.Printf("Alloc = %v MiB", bToMb(m.Alloc))
fmt.Printf("\tTotalAlloc = %v MiB", bToMb(m.TotalAlloc))
fmt.Printf("\tSys = %v MiB", bToMb(m.Sys))
fmt.Printf("\tNumGC = %v\n", m.NumGC)
var playerCount int
game.G_GameLogicPtr.M_Players.Range(func(key, value interface{}) bool {
playerCount++
return true
})
fmt.Printf("\tPlayerNum = %v\n", playerCount)
}
func bToMb(b uint64) uint64 {
return b / 1024 / 1024
}
func BenchmarkChampionshipGroup(b *testing.B) {
for i := 0; i < b.N; i++ {
game.G_GameLogicPtr.CreateChampshipMgr()
game.G_GameLogicPtr.ChampshipMgr.Debug()
}
}
func BenchmarkPlayerInit(b *testing.B) {
for i := 0; i < b.N; i++ {
p := new(game.Player)
p.InitPlayer("aaa002")
p.LoginBackData()
}
}
func BenchmarkPlayerBackup(b *testing.B) {
p := new(game.Player)
p.InitPlayer("aaa002")
for i := 0; i < b.N; i++ {
p.BackUp()
}
}
func BenchmarkPlayerRecover(b *testing.B) {
p := new(game.Player)
p.InitPlayer("aaa002")
backup := p.BackUp()
for i := 0; i < b.N; i++ {
p.Recover(backup)
}
}
func BenchmarkPlayerHandleMsg(b *testing.B) {
p := new(game.Player)
p.InitPlayer("aaa002")
list := make([]*msg.Msg, 0, 1000)
for i := 0; i < 1000; i++ {
m := &msg.Msg{
HandleType: msg.HANDLE_MOD_PLAYER_LOGIN,
Type: msg.HANDLE_TYPE_APPLY,
From: 100001,
To: i + 100002,
Extra: 0,
}
list = append(list, m)
}
for i := 0; i < b.N; i++ {
for _, m := range list {
p.HandleMsg(m)
}
}
}