github.com/godaddy-x/freego@v1.0.156/bench_test.go (about) 1 package main 2 3 import ( 4 "fmt" 5 "github.com/godaddy-x/freego/ormx/sqlc" 6 "github.com/godaddy-x/freego/ormx/sqld" 7 "github.com/godaddy-x/freego/utils" 8 "github.com/godaddy-x/freego/utils/decimal" 9 "go.mongodb.org/mongo-driver/bson/primitive" 10 ) 11 12 type OwWallet struct { 13 Id int64 `json:"id" bson:"_id"` 14 AppID string `json:"appID" bson:"appID"` 15 WalletID string `json:"walletID" bson:"walletID"` 16 Alias string `json:"alias" bson:"alias"` 17 IsTrust int64 `json:"isTrust" bson:"isTrust"` 18 PasswordType int64 `json:"passwordType" bson:"passwordType"` 19 Password string `json:"password" bson:"password"` 20 AuthKey string `json:"authKey" bson:"authKey"` 21 RootPath string `json:"rootPath" bson:"rootPath"` 22 AccountIndex int64 `json:"accountIndex" bson:"accountIndex"` 23 Keystore string `json:"keyJson" bson:"keyJson"` 24 Applytime int64 `json:"applytime" bson:"applytime"` 25 Succtime int64 `json:"succtime" bson:"succtime"` 26 Dealstate int64 `json:"dealstate" bson:"dealstate"` 27 Ctime int64 `json:"ctime" bson:"ctime"` 28 Utime int64 `json:"utime" bson:"utime"` 29 State int64 `json:"state" bson:"state"` 30 } 31 32 func (o *OwWallet) GetTable() string { 33 return "ow_wallet" 34 } 35 36 func (o *OwWallet) NewObject() sqlc.Object { 37 return &OwWallet{} 38 } 39 40 func (o *OwWallet) NewIndex() []sqlc.Index { 41 return nil 42 } 43 44 type OwWallet2 struct { 45 Id primitive.ObjectID `json:"id" bson:"_id"` 46 AppID string `json:"appID" bson:"appID"` 47 WalletID string `json:"walletID" bson:"walletID"` 48 Alias string `json:"alias" bson:"alias"` 49 IsTrust int64 `json:"isTrust" bson:"isTrust"` 50 PasswordType int64 `json:"passwordType" bson:"passwordType"` 51 Password string `json:"password" bson:"password"` 52 AuthKey string `json:"authKey" bson:"authKey"` 53 RootPath string `json:"rootPath" bson:"rootPath"` 54 AccountIndex int64 `json:"accountIndex" bson:"accountIndex"` 55 Keystore string `json:"keystore" bson:"keystore"` 56 Applytime int64 `json:"applytime" bson:"applytime"` 57 Succtime int64 `json:"succtime" bson:"succtime"` 58 Dealstate int64 `json:"dealstate" bson:"dealstate"` 59 Ctime int64 `json:"ctime" bson:"ctime"` 60 Utime int64 `json:"utime" bson:"utime"` 61 State int64 `json:"state" bson:"state"` 62 } 63 64 func (o *OwWallet2) GetTable() string { 65 return "ow_wallet2" 66 } 67 68 func (o *OwWallet2) NewObject() sqlc.Object { 69 return &OwWallet2{} 70 } 71 72 func (o *OwWallet2) NewIndex() []sqlc.Index { 73 return nil 74 } 75 76 type OwBlock struct { 77 Id int64 `json:"id" bson:"_id"` 78 Hash string `json:"hash" bson:"hash"` 79 Confirmations string `json:"confirmations" bson:"confirmations"` 80 Merkleroot string `json:"merkleroot" bson:"merkleroot"` 81 Previousblockhash string `json:"previousblockhash" bson:"previousblockhash"` 82 Height int64 `json:"height" bson:"height"` 83 Version int64 `json:"version" bson:"version"` 84 Time int64 `json:"time" bson:"time"` 85 Fork string `json:"fork" bson:"fork"` 86 Symbol string `json:"symbol" bson:"symbol"` 87 Ctime int64 `json:"ctime" bson:"ctime"` 88 Utime int64 `json:"utime" bson:"utime"` 89 State int64 `json:"state" bson:"state"` 90 } 91 92 func (o *OwBlock) GetTable() string { 93 return "ow_block" 94 } 95 96 func (o *OwBlock) NewObject() sqlc.Object { 97 return &OwBlock{} 98 } 99 100 func (o *OwBlock) NewIndex() []sqlc.Index { 101 return nil 102 } 103 104 type OwAuth struct { 105 Id int64 `json:"id" bson:"_id" auto:"true"` 106 Name string `json:"name" bson:"secret"` 107 Usestate decimal.Decimal `json:"usestate" bson:"usestate"` 108 } 109 110 func (o *OwAuth) GetTable() string { 111 return "ow_api" 112 } 113 114 func (o *OwAuth) NewObject() sqlc.Object { 115 return &OwAuth{} 116 } 117 118 func (o *OwAuth) NewIndex() []sqlc.Index { 119 return nil 120 } 121 122 // go build -gcflags=-m main.go 123 // go tool pprof -http=":8081" .\cpuprofile.out 124 // go test bench_test.go -bench . -benchmem -count=5 -cpuprofile cpuprofile.out -memprofile memprofile.out 125 126 func initMysqlDB() { 127 conf := sqld.MysqlConfig{} 128 if err := utils.ReadLocalJsonConfig("resource/mysql.json", &conf); err != nil { 129 panic(utils.AddStr("读取mysql配置失败: ", err.Error())) 130 } 131 new(sqld.MysqlManager).InitConfigAndCache(nil, conf) 132 fmt.Println("init mysql success") 133 } 134 135 func initMongoDB() { 136 conf := sqld.MGOConfig{} 137 if err := utils.ReadLocalJsonConfig("resource/mongo.json", &conf); err != nil { 138 panic(utils.AddStr("读取mongo配置失败: ", err.Error())) 139 } 140 new(sqld.MGOManager).InitConfigAndCache(nil, conf) 141 fmt.Println("init mongo success") 142 } 143 144 func initDriver() { 145 sqld.ModelDriver( 146 &OwWallet{}, 147 //&OwWallet2{}, 148 //&OwBlock{}, 149 //&OwContract{}, 150 &OwAuth{}, 151 ) 152 } 153 154 func init() { 155 156 // 注册对象 157 //sqld.ModelDriver( 158 // sqld.NewHook(func() interface{} { return &OwWallet{} }, func() interface{} { return &[]*OwWallet{} }), 159 //) 160 //initConsul() 161 //initMysqlDB() 162 //initMongoDB() 163 //sqld.ModelDriver( 164 // sqld.Hook{ 165 // func() interface{} { return &DxApp{} }, 166 // func() interface{} { return &[]*DxApp{} }, 167 // }, 168 //) 169 //redis := cache.RedisConfig{} 170 //if err := utils.ReadLocalJsonConfig("resource/redis.json", &redis); err != nil { 171 // panic(utils.AddStr("读取redis配置失败: ", err.Error())) 172 //} 173 //manager, err := new(cache.RedisManager).InitConfig(redis) 174 //if err != nil { 175 // panic(err.Error()) 176 //} 177 //manager, err = manager.Client() 178 //if err != nil { 179 // panic(err.Error()) 180 //} 181 //mongo1 := sqld.MGOConfig{} 182 //if err := utils.ReadLocalJsonConfig("resource/mongo.json", &mongo1); err != nil { 183 // panic(utils.AddStr("读取mongo配置失败: ", err.Error())) 184 //} 185 //new(sqld.MGOManager).InitConfigAndCache(nil, mongo1) 186 //opts := &options.ClientOptions{Hosts: []string{"192.168.27.124:27017"}} 187 //// opts.SetAuth(options.Credential{AuthMechanism: "SCRAM-SHA-1", AuthSource: "test", Username: "test", Password: "123456"}) 188 //client, err := mongo.Connect(context.Background(), opts) 189 //if err != nil { 190 // fmt.Println(err) 191 // return 192 //} 193 //MyClient = client 194 } 195 196 //func BenchmarkSave(b *testing.B) { 197 // b.StopTimer() //调用该函数停止压力测试的时间计数go test -run="webbench_test.go" -test.bench="."* 198 // b.StartTimer() //重新开始时间 199 // for i := 0; i < b.N; i++ { //use b.N for looping 200 // db, err := new(sqld.MGOManager).Get() 201 // if err != nil { 202 // panic(err) 203 // } 204 // defer db.Close() 205 // //l := utils.UnixMilli() 206 // o := OwWallet{ 207 // AppID: utils.GetSnowFlakeStrID(), 208 // WalletID: utils.GetSnowFlakeStrID(), 209 // } 210 // if err := db.Save(&o); err != nil { 211 // fmt.Println(err) 212 // } 213 // } 214 // //fmt.Println(wallet.Id) 215 //} 216 217 //func BenchmarkFind(b *testing.B) { 218 // b.StopTimer() //调用该函数停止压力测试的时间计数go test -run="webbench_test.go" -test.bench="."* 219 // b.StartTimer() //重新开始时间 220 // for i := 0; i < b.N; i++ { //use b.N for looping 221 // db, err := new(sqld.MGOManager).Get(sqld.Option{OpenTx: true}) 222 // if err != nil { 223 // panic(err) 224 // } 225 // defer db.Close() 226 // o := OwWallet{} 227 // if err := db.FindOne(sqlc.M(&OwWallet{}).Eq("id", 1110012978914131972), &o); err != nil { 228 // fmt.Println(err) 229 // } 230 // //fmt.Println(wallet.Id) 231 // } 232 //} 233 // 234 //func BenchmarkUpdateBy(b *testing.B) { 235 // b.StopTimer() //调用该函数停止压力测试的时间计数go test -run="webbench_test.go" -test.bench="."* 236 // b.StartTimer() //重新开始时间 237 // for i := 0; i < b.N; i++ { //use b.N for looping 238 // db, err := new(sqld.MGOManager).Get(sqld.Option{OpenTx: true}) 239 // if err != nil { 240 // panic(err) 241 // } 242 // defer db.Close() 243 // if err := db.UpdateByCnd(sqlc.M(&OwWallet{}).Eq("id", 1110012978914131972).UpdateKeyValue([]string{"appID", "ctime"}, utils.GetSnowFlakeStrID(), 1)); err != nil { 244 // fmt.Println(err) 245 // } 246 // //fmt.Println(wallet.Id) 247 // } 248 //} 249 250 //func BenchmarkMysqlFindOne(b *testing.B) { 251 // b.StopTimer() //调用该函数停止压力测试的时间计数go test -run="webbench_test.go" -test.bench="."* 252 // b.StartTimer() //重新开始时间 253 // for i := 0; i < b.N; i++ { //use b.N for looping 254 // db, err := new(sqld.MysqlManager).Get(sqld.Option{OpenTx: false}) 255 // if err != nil { 256 // panic(err) 257 // } 258 // defer db.Close() 259 // //l := utils.UnixMilli() 260 // wallet := OwWallet{} 261 // if err := db.FindOne(sqlc.M().Eq("id", 1109819683034365953), &wallet); err != nil { 262 // fmt.Println(err) 263 // } 264 // //fmt.Println("cost: ", utils.UnixMilli()-l) 265 // } 266 //} 267 // 268 //func BenchmarkMongoFindOne(b *testing.B) { 269 // b.StopTimer() //调用该函数停止压力测试的时间计数go test -run="webbench_test.go" -test.bench="."* 270 // b.StartTimer() //重新开始时间 271 // for i := 0; i < b.N; i++ { //use b.N for looping 272 // db, err := new(sqld.MGOManager).Get() 273 // if err != nil { 274 // panic(err) 275 // } 276 // defer db.Close() 277 // o := &OwWallet{} 278 // if err := db.FindOne(sqlc.M().Eq("id", 1182663723102240768), o); err != nil { 279 // fmt.Println(err) 280 // } 281 // } 282 //} 283 284 //func BenchmarkConsulxCallRPC(b *testing.B) { 285 // mgr, err := new(consul.ConsulManager).Client() 286 // if err != nil { 287 // panic(err) 288 // } 289 // 290 // req := &ReqObj{AesObj{"456789"}, 123, "托尔斯泰"} 291 // res := &ResObj{} 292 // 293 // if err := mgr.CallRPC(&consul.CallInfo{ 294 // Package: "mytest", 295 // Service: "UserServiceImpl", 296 // Method: "FindUser", 297 // Request: req, 298 // Response: res, 299 // }); err != nil { 300 // fmt.Println(err) 301 // return 302 // } 303 // //fmt.Println("grpc result: ", res) 304 //}