Advertisement
Guest User

Untitled

a guest
Jul 22nd, 2017
50
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.50 KB | None | 0 0
  1. local _GetTime = _G.GetTime
  2. local _unpack = _G.unpack
  3. local _setmetatable = _G.setmetatable
  4. local _tostring = _G.tostring
  5.  
  6. local count = _GetTime()
  7. local FUNC_TIME = {}
  8. local FUNC_PCALL = {}
  9. RegisterEvent("RENDER_FRAME_UPDATE", function()
  10. if _GetTime() - count > 10000 then
  11. count = _GetTime()
  12. local data = {}
  13. for k, v in pairs(FUNC_TIME) do
  14. table.insert(data, { nTime = v.nTime, nCount = v.nCount, szName = k })
  15. end
  16. table.sort(data, function(a, b)
  17. return a.nTime > b.nTime
  18. end)
  19. local data2 = {}
  20. for k, v in pairs(FUNC_PCALL) do
  21. table.insert(data2, { nTime = v.nTime, nCount = v.nCount, szName = k })
  22. end
  23. table.sort(data2, function(a, b)
  24. return a.nTime > b.nTime
  25. end)
  26. local a = "name\ttime\tcount\n"
  27. for i = 1, 5 do
  28. if data[i] then
  29. a = a .. data[i].szName .. "\t" .. data[i].nTime .. "\t" .. data[i].nCount .. "\n"
  30. end
  31. end
  32. a = a .. "\n-------- PCALL ----------\n\n"
  33. for i = 1, 5 do
  34. if data2[i] then
  35. a = a .. data2[i].szName .. "\t" .. data2[i].nTime .. "\t" .. data2[i].nCount .. "\n"
  36. end
  37. end
  38. local t = TimeToDate(GetCurrentTime())
  39. Log("interface/0Analysis/analysis/LOG_" .. string.format("%02d.%02d.%02d", t.hour, t.minute, t.second) .. ".log", a, "close")
  40. -- SaveLUAData("interface/0Analysis/analysis/LOG_" .. string.format("%02d.%02d.%02d", t.hour, t.minute, t.second), { data = data, data2 = data2 }, "\t", false)
  41. FUNC_TIME = {}
  42. FUNC_PCALL = {}
  43. end
  44. end)
  45.  
  46. for k, v in pairs(_G) do
  47. -- Log(k .." | " ..type(v))
  48. if type(v) == "function"
  49. and k ~= "OnEvent"
  50. and k ~= "OnFrameCreate"
  51. and k ~= "OnFrameBreathe"
  52. and k ~= "OnItemMouseEnter"
  53. and k ~= "OnItemMouseLeave"
  54. and k ~= "OnMouseEnter"
  55. and k ~= "OnMouseLeave"
  56. and k ~= "OnCheckBoxUncheck"
  57. and k ~= "OnCheckBoxCheck"
  58. and k ~= "OnDocumentComplete"
  59. and k ~= "OnFrameDragEnd"
  60. and k ~= "OnLButtonClick"
  61. and k ~= "OnItemLButtonClick"
  62. and k ~= "ReloadUIAddon"
  63. then
  64. -- Log(k)
  65. local fn = v
  66. _G[k] = function( ... )
  67. local nTime = _GetTime()
  68. local t = { fn(...) }
  69. local sort = _GetTime() - nTime
  70.  
  71. if k == "pcall" then
  72. local c = { ... }
  73. local address = _tostring(c[1])
  74. FUNC_PCALL[address] = FUNC_PCALL[address] or { nTime = 0, nCount = 0 }
  75. FUNC_PCALL[address].nTime = FUNC_PCALL[address].nTime + sort
  76. FUNC_PCALL[address].nCount = FUNC_PCALL[address].nCount + 1
  77. end
  78.  
  79. FUNC_TIME[k] = FUNC_TIME[k] or { nTime = 0, nCount = 0 }
  80. FUNC_TIME[k].nTime = FUNC_TIME[k].nTime + sort
  81. FUNC_TIME[k].nCount = FUNC_TIME[k].nCount + 1
  82. return _unpack(t)
  83. end
  84. end
  85. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement