179 lines
3.7 KiB
Plaintext
179 lines
3.7 KiB
Plaintext
require "Script.Main.FilePath"
|
|
require "Script.Main.Import"
|
|
require "Script.Main.init"
|
|
require "Script.Net.NetPrefix"
|
|
|
|
autoImport("protobuf")
|
|
autoImport("person_pb")
|
|
|
|
TestNetProtocolVSPb = {}
|
|
|
|
function TestNetProtocolVSPb.MessageToString(t)
|
|
-- return ""
|
|
local s = ""
|
|
if t == nil then
|
|
return "nil"
|
|
end
|
|
|
|
for key, value in pairs(t) do
|
|
print("dsadsad "..tostring(key))
|
|
print("dsadsad "..tostring(value))
|
|
|
|
-- if type(value) ~= "table" then
|
|
-- if value ~= nil then
|
|
-- if string.len(tostring(value)) > 0 then
|
|
-- s = s..tostring(key).."_"..tostring(value).."\n"
|
|
-- else
|
|
-- s = s..tostring(key).."_".." ".."\n"
|
|
-- end
|
|
-- else
|
|
-- s = s..key.."_".."nil".."\n"
|
|
-- end
|
|
-- else
|
|
-- s = s..key.."_"..NetProtocol.TableToString(value)
|
|
-- end
|
|
end
|
|
return s
|
|
end
|
|
|
|
function TestNetProtocolVSPb.TestPb()
|
|
print(jit and "jit on" or "jit off, pls run test with luajit")
|
|
|
|
local msg = SceneUser_pb.UserSyncCmd()
|
|
local data = SceneUser_pb.UserData()
|
|
data.value = 213342523
|
|
data.type = ProtoCommon_pb.EUSERDATATYPE_ROLELEVEL
|
|
table.insert(msg.datas, data)
|
|
|
|
print(TestNetProtocolVSPb.MessageToString(data))
|
|
|
|
-- local str = data:SerializeToString()
|
|
-- str = NetUtil.BytesToString(NetUtil.CharsToBytes(str, #str))
|
|
|
|
|
|
|
|
-- msg.a = 1
|
|
-- table.insert(msg.attrs, SceneUser_pb.UserAttr())
|
|
|
|
-- local attr = SceneUser_pb.UserAttr()
|
|
-- attr.type = 2
|
|
-- table.insert(msg.attrs, attr)
|
|
|
|
-- local d = SceneUser_pb.UserData()
|
|
-- d.type = 2
|
|
-- table.insert(msg.datas, d)
|
|
|
|
-- d = SceneUser_pb.UserData()
|
|
-- d.type = 10
|
|
-- table.insert(msg.datas, d)
|
|
|
|
-- str = msg:SerializeToString()
|
|
-- print("xxxxx: "..str)
|
|
|
|
|
|
-- local msg1 = SceneUser_pb.UserTest()
|
|
-- msg1:ParseFromString(str)
|
|
-- print("xxxxx: "..msg1.a)
|
|
-- print("xxxxx: "..msg1.attrs[2].type)
|
|
-- print("xxxxx: "..msg1.datas[1].type)
|
|
-- print("xxxxx: "..msg1.datas[2].type)
|
|
|
|
-- protobuf
|
|
-- local person = person_pb.Data()
|
|
-- person.uid = 1
|
|
-- person.result = 1
|
|
|
|
-- local data1 = person_pb.Data2()
|
|
-- data1.armpos = 1
|
|
-- data1.guid = 1
|
|
-- data1.petid = 1
|
|
-- data1.stars = 1
|
|
-- table.insert(person.pets, data1)
|
|
|
|
-- local data2 = person_pb.Data2()
|
|
-- data2.armpos = 1
|
|
-- data2.guid = 1
|
|
-- data2.petid = 1
|
|
-- data2.stars = 1
|
|
-- table.insert(person.pets, data2)
|
|
|
|
-- local bytes
|
|
-- local object
|
|
|
|
-- local start = os.clock()
|
|
|
|
-- for i=1,10000 do
|
|
-- bytes = person:SerializeToString()
|
|
-- end
|
|
-- print(#bytes)
|
|
-- print(bytes)
|
|
-- print("object to bytes : " .. (os.clock()
|
|
-- - start))
|
|
|
|
-- start = os.clock()
|
|
|
|
-- for i=1,10000 do
|
|
-- object = person_pb.Data()
|
|
-- object:ParseFromString(bytes)
|
|
-- end
|
|
-- print("bytes to object : " .. (os.clock()
|
|
-- - start))
|
|
end
|
|
|
|
function TestNetProtocolVSPb.TestProtocol()
|
|
print(jit and "jit on" or "jit off, pls run test with luajit")
|
|
|
|
Data = {
|
|
{name="uid",type="uint8"},
|
|
{name="result", type="uint4"},
|
|
{name="num", type="uint4"},
|
|
{name="pets", type={
|
|
{name="armpos",type="int4"},
|
|
{name="guid",type="uint8"},
|
|
{name="petid",type="int4"},
|
|
{name="stars",type="int4"}
|
|
}, lenFrom="num"}
|
|
}
|
|
|
|
-- protocol
|
|
local person = {}
|
|
person.uid = 1
|
|
person.result = 1
|
|
person.num = 2
|
|
person.pets = {}
|
|
|
|
local data1 = {}
|
|
data1.armpos = 1
|
|
data1.guid = 1
|
|
data1.petid = 1
|
|
data1.stars = 1
|
|
table.insert(person.pets, data1)
|
|
|
|
local data2 = {}
|
|
data2.armpos = 1
|
|
data2.guid = 1
|
|
data2.petid = 1
|
|
data2.stars = 1
|
|
table.insert(person.pets, data2)
|
|
|
|
local bytes
|
|
local object
|
|
|
|
local start = os.clock()
|
|
|
|
for i=1,10000 do
|
|
bytes = NetProtocol.PackStruct(Data, person)
|
|
end
|
|
print(bytes.Length)
|
|
print("object to bytes : " .. (os.clock()
|
|
- start))
|
|
|
|
start = os.clock()
|
|
|
|
for i=1,10000 do
|
|
_, object = NetProtocol.UnpackStruct(Data, bytes, 0)
|
|
end
|
|
print("bytes to object : " .. (os.clock()
|
|
- start))
|
|
end
|