diff --git a/mindinsight/datavisual/data_transform/reservoir.py b/mindinsight/datavisual/data_transform/reservoir.py index 9fb72b8f..d415ed42 100644 --- a/mindinsight/datavisual/data_transform/reservoir.py +++ b/mindinsight/datavisual/data_transform/reservoir.py @@ -157,10 +157,22 @@ class HistogramReservoir(Reservoir): Args: size (int): Container Size. If the size is 0, the container is not limited. """ + def __init__(self, size): + super().__init__(size) + # Marker to avoid redundant calc for unchanged histograms. + self._visual_range_up_to_date = False + + def add_sample(self, sample): + """Adds sample, see parent class for details.""" + super().add_sample(sample) + self._visual_range_up_to_date = False def samples(self): """Return all stored samples.""" with self._mutex: + if self._visual_range_up_to_date: + return list(self._samples) + # calc visual range visual_range = _VisualRange() max_count = 0 @@ -179,15 +191,17 @@ class HistogramReservoir(Reservoir): bins = calc_histogram_bins(max_count) # update visual range - logger.info("Visual histogram: min %s, max %s, bins %s, max_count %s.", - visual_range.min, - visual_range.max, - bins, - max_count) + logger.debug( + "Visual histogram: min %s, max %s, bins %s, max_count %s.", + visual_range.min, + visual_range.max, + bins, + max_count) for sample in self._samples: histogram = sample.value histogram.set_visual_range(visual_range.max, visual_range.min, bins) + self._visual_range_up_to_date = True return list(self._samples)