Switch ringbuffer lists for deques. 6% performance boost (4.5% vs baseline)
parent
9dd754fdae
commit
905923cc4c
|
@ -29,6 +29,8 @@ def getConnectionOptions():
|
||||||
|
|
||||||
class Printer():
|
class Printer():
|
||||||
def __init__(self, gcodeManager):
|
def __init__(self, gcodeManager):
|
||||||
|
from collections import deque
|
||||||
|
|
||||||
self._gcodeManager = gcodeManager
|
self._gcodeManager = gcodeManager
|
||||||
|
|
||||||
# state
|
# state
|
||||||
|
@ -37,19 +39,19 @@ class Printer():
|
||||||
self._targetTemp = None
|
self._targetTemp = None
|
||||||
self._targetBedTemp = None
|
self._targetBedTemp = None
|
||||||
self._temps = {
|
self._temps = {
|
||||||
"actual": [],
|
"actual": deque([], 300),
|
||||||
"target": [],
|
"target": deque([], 300),
|
||||||
"actualBed": [],
|
"actualBed": deque([], 300),
|
||||||
"targetBed": []
|
"targetBed": deque([], 300)
|
||||||
}
|
}
|
||||||
self._tempBacklog = []
|
self._tempBacklog = []
|
||||||
|
|
||||||
self._latestMessage = None
|
self._latestMessage = None
|
||||||
self._messages = []
|
self._messages = deque([], 300)
|
||||||
self._messageBacklog = []
|
self._messageBacklog = []
|
||||||
|
|
||||||
self._latestLog = None
|
self._latestLog = None
|
||||||
self._log = []
|
self._log = deque([], 300)
|
||||||
self._logBacklog = []
|
self._logBacklog = []
|
||||||
|
|
||||||
self._state = None
|
self._state = None
|
||||||
|
@ -233,12 +235,10 @@ class Printer():
|
||||||
|
|
||||||
def _addLog(self, log):
|
def _addLog(self, log):
|
||||||
self._log.append(log)
|
self._log.append(log)
|
||||||
self._log = self._log[-300:]
|
|
||||||
self._stateMonitor.addLog(log)
|
self._stateMonitor.addLog(log)
|
||||||
|
|
||||||
def _addMessage(self, message):
|
def _addMessage(self, message):
|
||||||
self._messages.append(message)
|
self._messages.append(message)
|
||||||
self._messages = self._messages[-300:]
|
|
||||||
self._stateMonitor.addMessage(message)
|
self._stateMonitor.addMessage(message)
|
||||||
|
|
||||||
def _setProgressData(self, progress, filepos, printTime, printTimeLeft):
|
def _setProgressData(self, progress, filepos, printTime, printTimeLeft):
|
||||||
|
@ -264,16 +264,9 @@ class Printer():
|
||||||
currentTimeUtc = int(time.time() * 1000)
|
currentTimeUtc = int(time.time() * 1000)
|
||||||
|
|
||||||
self._temps["actual"].append((currentTimeUtc, temp))
|
self._temps["actual"].append((currentTimeUtc, temp))
|
||||||
self._temps["actual"] = self._temps["actual"][-300:]
|
|
||||||
|
|
||||||
self._temps["target"].append((currentTimeUtc, targetTemp))
|
self._temps["target"].append((currentTimeUtc, targetTemp))
|
||||||
self._temps["target"] = self._temps["target"][-300:]
|
|
||||||
|
|
||||||
self._temps["actualBed"].append((currentTimeUtc, bedTemp))
|
self._temps["actualBed"].append((currentTimeUtc, bedTemp))
|
||||||
self._temps["actualBed"] = self._temps["actualBed"][-300:]
|
|
||||||
|
|
||||||
self._temps["targetBed"].append((currentTimeUtc, bedTargetTemp))
|
self._temps["targetBed"].append((currentTimeUtc, bedTargetTemp))
|
||||||
self._temps["targetBed"] = self._temps["targetBed"][-300:]
|
|
||||||
|
|
||||||
self._temp = temp
|
self._temp = temp
|
||||||
self._bedTemp = bedTemp
|
self._bedTemp = bedTemp
|
||||||
|
@ -315,9 +308,9 @@ class Printer():
|
||||||
try:
|
try:
|
||||||
data = self._stateMonitor.getCurrentData()
|
data = self._stateMonitor.getCurrentData()
|
||||||
data.update({
|
data.update({
|
||||||
"temperatureHistory": self._temps,
|
"temperatureHistory": list(self._temps),
|
||||||
"logHistory": self._log,
|
"logHistory": list(self._log),
|
||||||
"messageHistory": self._messages
|
"messageHistory": list(self._messages)
|
||||||
})
|
})
|
||||||
callback.sendHistoryData(data)
|
callback.sendHistoryData(data)
|
||||||
except Exception, err:
|
except Exception, err:
|
||||||
|
|
|
@ -366,6 +366,8 @@ class MachineCom(object):
|
||||||
STATE_TRANSFERING_FILE = 11
|
STATE_TRANSFERING_FILE = 11
|
||||||
|
|
||||||
def __init__(self, port = None, baudrate = None, callbackObject = None):
|
def __init__(self, port = None, baudrate = None, callbackObject = None):
|
||||||
|
from collections import deque
|
||||||
|
|
||||||
self._logger = logging.getLogger(__name__)
|
self._logger = logging.getLogger(__name__)
|
||||||
self._serialLogger = logging.getLogger("SERIAL")
|
self._serialLogger = logging.getLogger("SERIAL")
|
||||||
|
|
||||||
|
@ -400,7 +402,7 @@ class MachineCom(object):
|
||||||
self._alwaysSendChecksum = settings().getBoolean(["feature", "alwaysSendChecksum"])
|
self._alwaysSendChecksum = settings().getBoolean(["feature", "alwaysSendChecksum"])
|
||||||
self._currentLine = 0
|
self._currentLine = 0
|
||||||
self._resendDelta = None
|
self._resendDelta = None
|
||||||
self._lastLines = []
|
self._lastLines = deque([], 50)
|
||||||
|
|
||||||
self._sendNextLock = threading.Lock()
|
self._sendNextLock = threading.Lock()
|
||||||
self._sendingLock = threading.Lock()
|
self._sendingLock = threading.Lock()
|
||||||
|
@ -971,15 +973,13 @@ class MachineCom(object):
|
||||||
self._currentLine = newLineNumber + 1
|
self._currentLine = newLineNumber + 1
|
||||||
|
|
||||||
# after a reset of the line number we have no way to determine what line exactly the printer now wants
|
# after a reset of the line number we have no way to determine what line exactly the printer now wants
|
||||||
self._lastLines = []
|
self._lastLines.clear()
|
||||||
self._resendDelta = None
|
self._resendDelta = None
|
||||||
return
|
return
|
||||||
self._doSend(cmd, sendChecksum)
|
self._doSend(cmd, sendChecksum)
|
||||||
|
|
||||||
def _addToLastLines(self, cmd):
|
def _addToLastLines(self, cmd):
|
||||||
self._lastLines.append(cmd)
|
self._lastLines.append(cmd)
|
||||||
if len(self._lastLines) > 50:
|
|
||||||
self._lastLines = self._lastLines[-50:] # only keep the last 50 lines in memory
|
|
||||||
self._logger.debug("Got %d lines of history in memory" % len(self._lastLines))
|
self._logger.debug("Got %d lines of history in memory" % len(self._lastLines))
|
||||||
|
|
||||||
def _doSend(self, cmd, sendChecksum=False):
|
def _doSend(self, cmd, sendChecksum=False):
|
||||||
|
|
Loading…
Reference in New Issue