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 |