SHOW:
|
|
- or go back to the newest paste.
| 1 | - | local com = require "component" |
| 1 | + | local com = require "component" |
| 2 | - | local fs = require "filesystem" |
| 2 | + | local fs = require "filesystem" |
| 3 | - | local keyboard = require "keyboard" |
| 3 | + | local keyboard = require "keyboard" |
| 4 | - | local gpu = com.gpu |
| 4 | + | local gpu = com.gpu |
| 5 | - | |
| 5 | + | |
| 6 | - | local leftX = 5 |
| 6 | + | local leftX = 5 |
| 7 | - | local topY = 14 |
| 7 | + | local topY = 14 |
| 8 | - | local timeConstant = 0.5 --how long it waits per measure cycle |
| 8 | + | local timeConstant = 0.5 --how long it waits per measure cycle |
| 9 | - | |
| 9 | + | |
| 10 | - | local w, h = gpu.getResolution() |
| 10 | + | local w, h = gpu.getResolution() |
| 11 | - | gpu.setBackground(0x000000) |
| 11 | + | gpu.setBackground(0x000000) |
| 12 | - | gpu.setForeground(0xFFFFFF) |
| 12 | + | gpu.setForeground(0xFFFFFF) |
| 13 | - | gpu.fill(1, 1, w, h, " ") -- clears the screen |
| 13 | + | gpu.fill(1, 1, w, h, " ") -- clears the screen |
| 14 | - | gpu.set(2,2,"Will measure TPS with wait period of "..tostring(timeConstant).." seconds... ") |
| 14 | + | gpu.set(2,2,"Will measure TPS with wait period of "..tostring(timeConstant).." seconds... ") |
| 15 | - | maxEQ = math.ceil((w-7)/3) |
| 15 | + | maxEQ = math.ceil((w-7)/3) |
| 16 | - | |
| 16 | + | |
| 17 | - | |
| 17 | + | |
| 18 | - | local function time() |
| 18 | + | local function time() |
| 19 | - | local f = io.open("/tmp/timeFile","w") |
| 19 | + | local f = io.open("/tmp/timeFile","w")
|
| 20 | - | f:write("test") |
| 20 | + | f:write("test")
|
| 21 | - | f:close() |
| 21 | + | f:close() |
| 22 | - | return(fs.lastModified("/tmp/timeFile")) |
| 22 | + | return(fs.lastModified("/tmp/timeFile"))
|
| 23 | end | |
| 24 | - | |
| 24 | + | |
| 25 | - | local realTimeOld = 0 |
| 25 | + | local realTimeOld = 0 |
| 26 | - | local realTimeNew = 0 |
| 26 | + | local realTimeNew = 0 |
| 27 | - | local realTimeDiff = 0 |
| 27 | + | local realTimeDiff = 0 |
| 28 | - | |
| 28 | + | |
| 29 | - | local TPS = {} |
| 29 | + | local TPS = {}
|
| 30 | - | local avgTPS = 0 |
| 30 | + | local avgTPS = 0 |
| 31 | - | for tSlot=1,maxEQ do |
| 31 | + | for tSlot=1,maxEQ do |
| 32 | - | TPS[tSlot]=0 |
| 32 | + | TPS[tSlot]=0 |
| 33 | end | |
| 34 | - | |
| 34 | + | |
| 35 | - | local function getColor(tps) --Uses HSV to decide color |
| 35 | + | local function getColor(tps) --Uses HSV to decide color |
| 36 | - | local H, rP, gP, bP, X = tps*12-120, 0, 0, 0, 0 |
| 36 | + | local H, rP, gP, bP, X = tps*12-120, 0, 0, 0, 0 |
| 37 | - | --H is hue should range from 0 to 120 |
| 37 | + | --H is hue should range from 0 to 120 |
| 38 | - | if H<0 then H=0 end --forces greater then 0 but if things get wonky lets Hue go above 120 and turn blue |
| 38 | + | if H<0 then H=0 end --forces greater then 0 but if things get wonky lets Hue go above 120 and turn blue |
| 39 | - | X = (1-math.abs((H/60)%2-1)) |
| 39 | + | X = (1-math.abs((H/60)%2-1)) |
| 40 | - | if H<60 then |
| 40 | + | if H<60 then |
| 41 | - | rP = 1 |
| 41 | + | rP = 1 |
| 42 | - | gP = X |
| 42 | + | gP = X |
| 43 | - | bP = 0 |
| 43 | + | bP = 0 |
| 44 | - | elseif H<120 then |
| 44 | + | elseif H<120 then |
| 45 | - | rP = X |
| 45 | + | rP = X |
| 46 | - | gP = 1 |
| 46 | + | gP = 1 |
| 47 | - | bP = 0 |
| 47 | + | bP = 0 |
| 48 | - | elseif H<180 then |
| 48 | + | elseif H<180 then |
| 49 | - | rP = 0 |
| 49 | + | rP = 0 |
| 50 | - | gP = 1 |
| 50 | + | gP = 1 |
| 51 | - | bP = X |
| 51 | + | bP = X |
| 52 | - | elseif H<240 then |
| 52 | + | elseif H<240 then |
| 53 | - | rP = 0 |
| 53 | + | rP = 0 |
| 54 | - | gP = X |
| 54 | + | gP = X |
| 55 | - | bP = 1 |
| 55 | + | bP = 1 |
| 56 | - | elseif H<300 then |
| 56 | + | elseif H<300 then |
| 57 | - | rP = X |
| 57 | + | rP = X |
| 58 | - | gP = 0 |
| 58 | + | gP = 0 |
| 59 | - | bP = 1 |
| 59 | + | bP = 1 |
| 60 | - | else |
| 60 | + | else |
| 61 | - | rP = 1 |
| 61 | + | rP = 1 |
| 62 | - | gP = 0 |
| 62 | + | gP = 0 |
| 63 | - | bP = X |
| 63 | + | bP = X |
| 64 | - | end |
| 64 | + | end |
| 65 | - | return(math.floor((rP)*255)*65536+math.floor((gP)*255)*256+math.floor((bP)*255)) |
| 65 | + | return(math.floor((rP)*255)*65536+math.floor((gP)*255)*256+math.floor((bP)*255)) |
| 66 | end | |
| 67 | - | |
| 67 | + | |
| 68 | - | local function histoPlot(tabVal,leftX, topY,step) |
| 68 | + | local function histoPlot(tabVal,leftX, topY,step) |
| 69 | - | local height = math.floor(tabVal[step]/2)+1 |
| 69 | + | local height = math.floor(tabVal[step]/2)+1 |
| 70 | - | if height>11 then height=11 end |
| 70 | + | if height>11 then height=11 end |
| 71 | - | gpu.setBackground(0xB4B4B4) |
| 71 | + | gpu.setBackground(0xB4B4B4) |
| 72 | - | gpu.fill(3*step+leftX-2, topY-2, 2, h-topY-10," ") --erases the old TPS bar |
| 72 | + | gpu.fill(3*step+leftX-2, topY-2, 2, h-topY-10," ") --erases the old TPS bar |
| 73 | - | gpu.fill(leftX-1,topY+10,w-5,1," ") --erases the old blue box |
| 73 | + | gpu.fill(leftX-1,topY+10,w-5,1," ") --erases the old blue box |
| 74 | - | gpu.setBackground(getColor(tabVal[step])) |
| 74 | + | gpu.setBackground(getColor(tabVal[step])) |
| 75 | - | gpu.fill(3*step+leftX-2, topY-height+10, 2, height," ") --draws the TPS bar |
| 75 | + | gpu.fill(3*step+leftX-2, topY-height+10, 2, height," ") --draws the TPS bar |
| 76 | - | gpu.setBackground(0x0064FF) |
| 76 | + | gpu.setBackground(0x0064FF) |
| 77 | - | gpu.fill(leftX+step*3-2,topY+10,2,1," ") --the blue box that marks where we are on the graph |
| 77 | + | gpu.fill(leftX+step*3-2,topY+10,2,1," ") --the blue box that marks where we are on the graph |
| 78 | - | gpu.setBackground(0x000000) |
| 78 | + | gpu.setBackground(0x000000) |
| 79 | end | |
| 80 | - | |
| 80 | + | |
| 81 | - | gpu.set(2,3,"To exit hold down Ctrl + W ") |
| 81 | + | gpu.set(2,3,"To exit hold down Ctrl + W ") |
| 82 | - | |
| 82 | + | |
| 83 | - | gpu.setBackground(0xB4B4B4) --draws the nice grey graph background |
| 83 | + | gpu.setBackground(0xB4B4B4) --draws the nice grey graph background |
| 84 | - | gpu.fill(leftX-1,topY-2,w-5,h-topY-10," ") |
| 84 | + | gpu.fill(leftX-1,topY-2,w-5,h-topY-10," ") |
| 85 | - | gpu.setBackground(0x000000) |
| 85 | + | gpu.setBackground(0x000000) |
| 86 | - | |
| 86 | + | |
| 87 | - | for i = 1,#TPS do --draws the first red bars to make something looking like a graph |
| 87 | + | for i = 1,#TPS do --draws the first red bars to make something looking like a graph |
| 88 | - | local height = math.floor(TPS[i]/2)+1 |
| 88 | + | local height = math.floor(TPS[i]/2)+1 |
| 89 | - | gpu.setBackground(getColor(TPS[i])) |
| 89 | + | gpu.setBackground(getColor(TPS[i])) |
| 90 | - | gpu.fill(3*i+leftX-2, topY-height+10, 2, height," ") |
| 90 | + | gpu.fill(3*i+leftX-2, topY-height+10, 2, height," ") |
| 91 | end | |
| 92 | - | gpu.setBackground(0x000000) |
| 92 | + | gpu.setBackground(0x000000) |
| 93 | - | gpu.set(18,11,"T/s") |
| 93 | + | gpu.set(18,11,"T/s") |
| 94 | - | gpu.set(1,12,"20") |
| 94 | + | gpu.set(1,12,"20") |
| 95 | - | gpu.set(1,17,"10") |
| 95 | + | gpu.set(1,17,"10") |
| 96 | - | gpu.set(1,22," 0") |
| 96 | + | gpu.set(1,22," 0") |
| 97 | - | for i=1, math.huge do |
| 97 | + | for i=1, math.huge do |
| 98 | - | for tSlot = 1, maxEQ do --main averaging loop that measures individual TPS and puts it into a cycling table location |
| 98 | + | for tSlot = 1, maxEQ do --main averaging loop that measures individual TPS and puts it into a cycling table location |
| 99 | - | realTimeOld = time() |
| 99 | + | realTimeOld = time() |
| 100 | - | os.sleep(timeConstant) --waits for an estimated ammount game seconds |
| 100 | + | os.sleep(timeConstant) --waits for an estimated ammount game seconds |
| 101 | - | realTimeNew = time() |
| 101 | + | realTimeNew = time() |
| 102 | - | -- print (realTimeNew) |
| 102 | + | -- print (realTimeNew) |
| 103 | - | realTimeDiff = realTimeNew-realTimeOld |
| 103 | + | realTimeDiff = realTimeNew-realTimeOld |
| 104 | - | |
| 104 | + | |
| 105 | - | TPS[tSlot] = 20000*timeConstant/realTimeDiff |
| 105 | + | TPS[tSlot] = 20000*timeConstant/realTimeDiff |
| 106 | - | avgTPS = (TPS[1]+TPS[2]+TPS[3]+TPS[4]+TPS[5]+TPS[6]+TPS[7]+TPS[8]+TPS[9]+TPS[10])/10 |
| 106 | + | avgTPS = (TPS[1]+TPS[2]+TPS[3]+TPS[4]+TPS[5]+TPS[6]+TPS[7]+TPS[8]+TPS[9]+TPS[10])/10 |
| 107 | - | gpu.set(2,5,"Server is running at :") |
| 107 | + | gpu.set(2,5,"Server is running at :") |
| 108 | - | gpu.set(3,6,string.sub(tostring(TPS[tSlot])..".0000",1,7).." Ticks/second ") |
| 108 | + | gpu.set(3,6,string.sub(tostring(TPS[tSlot])..".0000",1,7).." Ticks/second ") |
| 109 | - | gpu.set(2,8,"Averaged value is:") |
| 109 | + | gpu.set(2,8,"Averaged value is:") |
| 110 | - | gpu.set(3,9,string.sub(tostring(avgTPS)..".0000",1,7).." Ticks/second ") |
| 110 | + | gpu.set(3,9,string.sub(tostring(avgTPS)..".0000",1,7).." Ticks/second ") |
| 111 | - | histoPlot(TPS,leftX,topY,tSlot) |
| 111 | + | histoPlot(TPS,leftX,topY,tSlot) |
| 112 | - | if keyboard.isKeyDown(keyboard.keys.w) and keyboard.isControlDown() then |
| 112 | + | if keyboard.isKeyDown(keyboard.keys.w) and keyboard.isControlDown() then |
| 113 | - | gpu.set(2,11,"Exiting... ") |
| 113 | + | gpu.set(2,11,"Exiting... ") |
| 114 | - | os.sleep(0.5) |
| 114 | + | os.sleep(0.5) |
| 115 | - | gpu.fill(1, 1, w, h, " ") -- clears the screen |
| 115 | + | gpu.fill(1, 1, w, h, " ") -- clears the screen |
| 116 | - | os.exit() |
| 116 | + | os.exit() |
| 117 | - | end |
| 117 | + | end |
| 118 | - | end |
| 118 | + | end |
| 119 | end |