Re-enable the fast path for identical samples but only when both pins are waiting for the start bit. For sparse data sets (I tested UT61E capture log) the optimization results in a >4x decode improvement. --- decoders/uart/pd.py | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-)
diff --git a/decoders/uart/pd.py b/decoders/uart/pd.py index d42a5d4..682f3a4 100644 --- a/decoders/uart/pd.py +++ b/decoders/uart/pd.py @@ -138,6 +138,7 @@ class Decoder(srd.Decoder): ('tx', 'TX dump'), ('rxtx', 'RX/TX dump'), ) + idle_state = ['WAIT FOR START BIT', 'WAIT FOR START BIT'] def putx(self, rxtx, data): s, halfbit = self.startsample[rxtx], self.bit_width / 2.0 @@ -171,7 +172,7 @@ class Decoder(srd.Decoder): self.startsample = [-1, -1] self.state = ['WAIT FOR START BIT', 'WAIT FOR START BIT'] self.oldbit = [1, 1] - self.oldpins = [1, 1] + self.oldpins = [-1, -1] self.databits = [[], []] def start(self): @@ -338,11 +339,13 @@ class Decoder(srd.Decoder): raise SamplerateError('Cannot decode without samplerate.') for (self.samplenum, pins) in data: - # Note: Ignoring identical samples here for performance reasons - # is not possible for this PD, at least not in the current state. - # if self.oldpins == pins: - # continue - self.oldpins, (rx, tx) = pins, pins + # We want to skip identical samples for performance reasons but, + # for now, we can only do that when we are in the idle state + # (meaning both channels are waiting for the start bit). + if self.state == self.idle_state and self.oldpins == pins: + continue + + self.oldpins, (rx, tx) = pins, pins if self.options['invert_rx'] == 'yes': rx = not rx -- 2.5.0 ------------------------------------------------------------------------------ Site24x7 APM Insight: Get Deep Visibility into Application Performance APM + Mobile APM + RUM: Monitor 3 App instances at just $35/Month Monitor end-to-end web transactions and take corrective actions now Troubleshoot faster and improve end-user experience. Signup Now! http://pubads.g.doubleclick.net/gampad/clk?id=267308311&iu=/4140 _______________________________________________ sigrok-devel mailing list sigrok-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/sigrok-devel