From 536589e44578369434dec58f4d1c8b9ea69592e7 Mon Sep 17 00:00:00 2001 From: daminglu Date: Thu, 4 Jan 2018 18:42:31 +0800 Subject: [PATCH] optimize scalar sampling (#58) * optimize sampling * fix comments * len(data) only once --- server/visualdl/lib.py | 26 ++++++++++++++++++-------- 1 file changed, 18 insertions(+), 8 deletions(-) diff --git a/server/visualdl/lib.py b/server/visualdl/lib.py index 7245a374..c0850037 100644 --- a/server/visualdl/lib.py +++ b/server/visualdl/lib.py @@ -30,6 +30,8 @@ def get_scalar_tags(storage, mode): def get_scalar(storage, mode, tag, num_records=300): + assert num_records > 1 + with storage.mode(mode) as reader: scalar = reader.scalar(tag) @@ -38,16 +40,24 @@ def get_scalar(storage, mode, tag, num_records=300): timestamps = scalar.timestamps() data = zip(timestamps, ids, records) - if len(data) <= num_records: + data_size = len(data) + + if data_size <= num_records: return data - span = float(len(data) / num_records) - end_idx = len(data) - 1 - res = [] - for i in xrange(num_records): - id = int(end_idx - i * span) - res.append(data[id]) - return [v for v in reversed(res)] + span = float(data_size) / (num_records - 1) + span_offset = 0 + + data_idx = int(span_offset * span) + sampled_data = [] + + while data_idx < data_size: + sampled_data.append(data[data_size - data_idx - 1]) + span_offset += 1 + data_idx = int(span_offset * span) + + sampled_data.append(data[0]) + return sampled_data[::-1] def get_image_tags(storage): -- GitLab