1
0
mirror of https://github.com/Mrs4s/go-cqhttp.git synced 2025-05-05 03:23:49 +08:00

add array benchmark

This commit is contained in:
wdvxdr 2021-04-20 13:15:33 +08:00
parent ee3e1bac76
commit a5314f0b6d
No known key found for this signature in database
GPG Key ID: 55FF1414A69CEBA6
2 changed files with 17 additions and 4 deletions

View File

@ -589,6 +589,7 @@ End:
// ConvertObjectMessage 将消息JSON对象转为消息元素数组 // ConvertObjectMessage 将消息JSON对象转为消息元素数组
func (bot *CQBot) ConvertObjectMessage(m gjson.Result, isGroup bool) (r []message.IMessageElement) { func (bot *CQBot) ConvertObjectMessage(m gjson.Result, isGroup bool) (r []message.IMessageElement) {
d := make(map[string]string)
convertElem := func(e gjson.Result) { convertElem := func(e gjson.Result) {
t := e.Get("type").Str t := e.Get("type").Str
if t == "reply" && isGroup { if t == "reply" && isGroup {
@ -672,7 +673,9 @@ func (bot *CQBot) ConvertObjectMessage(m gjson.Result, isGroup bool) (r []messag
} }
return return
} }
d := make(map[string]string) for i := range d {
delete(d, i)
}
e.Get("data").ForEach(func(key, value gjson.Result) bool { e.Get("data").ForEach(func(key, value gjson.Result) bool {
d[key.Str] = value.String() d[key.Str] = value.String()
return true return true
@ -693,9 +696,10 @@ func (bot *CQBot) ConvertObjectMessage(m gjson.Result, isGroup bool) (r []messag
return bot.ConvertStringMessage(m.Str, isGroup) return bot.ConvertStringMessage(m.Str, isGroup)
} }
if m.IsArray() { if m.IsArray() {
for _, e := range m.Array() { m.ForEach(func(_, e gjson.Result) bool {
convertElem(e) convertElem(e)
} return true
})
} }
if m.IsObject() { if m.IsObject() {
convertElem(m) convertElem(m)

View File

@ -3,6 +3,8 @@ package coolq
import ( import (
"fmt" "fmt"
"testing" "testing"
"github.com/tidwall/gjson"
) )
var bot = CQBot{} var bot = CQBot{}
@ -13,10 +15,17 @@ func TestCQBot_ConvertStringMessage(t *testing.T) {
} }
} }
var bench = `asdfqwerqwerqwer[CQ:face,id=115,text=111]asdfasdfasdfasdfasdfasdfasd[CQ:face,id=217]] [CQ:text,text=123] [` var bench = `asdfqwerqwerqwer[CQ:face,id=115,text=111]asdfasdfasdfasdfasdfasdfasd[CQ:face,id=217]] 123 [`
var benchArray = gjson.Parse(`[{"type":"text","data":{"text":"asdfqwerqwerqwer"}},{"type":"face","data":{"id":"115","text":"111"}},{"type":"text","data":{"text":"asdfasdfasdfasdfasdfasdfasd"}},{"type":"face","data":{"id":"217"}},{"type":"text","data":{"text":"] "}},{"type":"text","data":{"text":"123"}},{"type":"text","data":{"text":" ["}}]`)
func BenchmarkCQBot_ConvertStringMessage(b *testing.B) { func BenchmarkCQBot_ConvertStringMessage(b *testing.B) {
for i := 0; i < b.N; i++ { for i := 0; i < b.N; i++ {
bot.ConvertStringMessage(bench, false) bot.ConvertStringMessage(bench, false)
} }
} }
func BenchmarkCQBot_ConvertObjectMessage(b *testing.B) {
for i := 0; i < b.N; i++ {
bot.ConvertObjectMessage(benchArray, false)
}
}