跳到主要内容

性能统计

性能统计相关。结果会打印到服务器局日志的perf.log.txt

base.perf_add

登记一个性能统计项,并可选地标记父子关系。建议在代码的最早期执行(增加性能统计项之前进行的性能统计会被忽略)

  • 参数
    • label (string) - 标签名字
    • father_label (string) - 可选。表示现在登记的叫label的这项在调用关系上是father_label这项的儿子。这个父子关系只影响打印到perf.log.txt里的东西,不影响别的。father_label必须被先行登记过。
  • 返回
    • ret (bool) - 表式是否增加成功。可能的失败原因:标签被重复登记、父标签尚未登记
base.perf_add('某统计')
base.perf_add('某具体的统计', '某统计')

base.perf

统计一段代码的性能(平均耗时,最大耗时,总耗时),精度默认是毫秒级(不同机器会有区别) 注意过量的统计性能是有额外代价的

  • 参数
    • label (string) - 标签名字。这个标签必须提前用base.perf_add登记过,否则本次调用会被忽略
    • function - 将要统计的代码放这个函数里。函数内的代码会被立即执行
base.perf('某统计', function()
-- do something
-- blablabla
base.perf_add('某具体的统计', function()
-- do other something
end)
end)

打到log里的效果(有删节)

[STAT_SERVER_COST]: AvgCost[2.38ms], MaxCost[576.00ms], TotalCost[668.00ms], Count[281], Percent[6.68%], FrameAvg[2.37ms], FrameMax[576.00ms], CountInFrameMax[1] --->[STAT_GAME_SESSION_UPDATE]: AvgCost[2.38ms], MaxCost[576.00ms], TotalCost[668.00ms], Count[281], Percent[6.68%], FrameAvg[2.37ms], FrameMax[576.00ms], CountInFrameMax[1] ------->[某统计]: AvgCost[0.13ms], MaxCost[1.00ms], TotalCost[33.00ms], Count[251], Percent[0.33%], FrameAvg[0.13ms], FrameMax[1.00ms], CountInFrameMax[1] ----------->[某具体的统计]: AvgCost[0.10ms], MaxCost[1.00ms], TotalCost[24.00ms], Count[251], Percent[0.24%], FrameAvg[0.10ms], FrameMax[1.00ms], CountInFrameMax[1]