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

View File

@ -3,6 +3,8 @@ package coolq
import (
"fmt"
"testing"
"github.com/tidwall/gjson"
)
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) {
for i := 0; i < b.N; i++ {
bot.ConvertStringMessage(bench, false)
}
}
func BenchmarkCQBot_ConvertObjectMessage(b *testing.B) {
for i := 0; i < b.N; i++ {
bot.ConvertObjectMessage(benchArray, false)
}
}