Add more frequent ds steps when zooming out; use profiler gt

big_data_lines
Tyler Goodlet 2022-04-01 13:46:37 -04:00
parent 5128e4c304
commit 5da9f7fdb4
1 changed files with 17 additions and 6 deletions

View File

@ -32,7 +32,7 @@ from PyQt5.QtCore import (
QPointF, QPointF,
) )
from .._profile import pg_profile_enabled from .._profile import pg_profile_enabled, ms_slower_then
from ._style import hcolor from ._style import hcolor
from ._compression import ( from ._compression import (
# ohlc_to_m4_line, # ohlc_to_m4_line,
@ -192,6 +192,10 @@ class FastAppendCurve(pg.GraphicsObject):
self.update() self.update()
# TODO: probably stick this in a new parent
# type which will contain our own version of
# what ``PlotCurveItem`` had in terms of base
# functionality? A `FlowGraphic` maybe?
def x_uppx(self) -> int: def x_uppx(self) -> int:
px_vecs = self.pixelVectors()[0] px_vecs = self.pixelVectors()[0]
@ -225,14 +229,17 @@ class FastAppendCurve(pg.GraphicsObject):
uppx = self.x_uppx() uppx = self.x_uppx()
px_width = self.px_width() px_width = self.px_width()
uppx_diff = abs(uppx - self._last_uppx) # uppx_diff = abs(uppx - self._last_uppx)
uppx_diff = (uppx - self._last_uppx)
self._last_uppx = uppx self._last_uppx = uppx
should_redraw: bool = False should_redraw: bool = False
should_ds: bool = False should_ds: bool = False
# print(uppx_diff)
if ( if (
uppx <= 4 uppx <= 8
): ):
# trigger redraw or original non-downsampled data # trigger redraw or original non-downsampled data
if self._in_ds: if self._in_ds:
@ -243,7 +250,8 @@ class FastAppendCurve(pg.GraphicsObject):
elif ( elif (
uppx_diff >= 4 uppx_diff >= 4
or self._step_mode and uppx_diff >= 1 or uppx_diff <= -2
or self._step_mode and abs(uppx_diff) >= 1
): ):
log.info( log.info(
f'{self._name} downsampler change: {self._last_uppx} -> {uppx}' f'{self._name} downsampler change: {self._last_uppx} -> {uppx}'
@ -309,6 +317,7 @@ class FastAppendCurve(pg.GraphicsObject):
profiler = pg.debug.Profiler( profiler = pg.debug.Profiler(
msg=f'{self._name}.update_from_array()', msg=f'{self._name}.update_from_array()',
disabled=not pg_profile_enabled(), disabled=not pg_profile_enabled(),
gt=ms_slower_then,
) )
flip_cache = False flip_cache = False
@ -625,8 +634,9 @@ class FastAppendCurve(pg.GraphicsObject):
) -> None: ) -> None:
profiler = pg.debug.Profiler( profiler = pg.debug.Profiler(
msg=f'{self._name}.paint()', msg=f'FastAppendCurve.paint(): `{self._name}`',
disabled=not pg_profile_enabled(), disabled=not pg_profile_enabled(),
gt=ms_slower_then,
) )
if ( if (
@ -638,6 +648,7 @@ class FastAppendCurve(pg.GraphicsObject):
# p.drawLines(*tuple(filter(bool, self._last_step_lines))) # p.drawLines(*tuple(filter(bool, self._last_step_lines)))
# p.drawRect(self._last_step_rect) # p.drawRect(self._last_step_rect)
p.fillRect(self._last_step_rect, brush) p.fillRect(self._last_step_rect, brush)
profiler('.fillRect()')
if self._last_line: if self._last_line:
p.setPen(self.last_step_pen) p.setPen(self.last_step_pen)
@ -648,8 +659,8 @@ class FastAppendCurve(pg.GraphicsObject):
path = self.path path = self.path
if path: if path:
profiler('.drawPath(path)')
p.drawPath(path) p.drawPath(path)
profiler('.drawPath(path)')
fp = self.fast_path fp = self.fast_path
if fp: if fp: