Более эффективное отображение очень больших наборов данных

У меня есть проект логического анализатора, который записывает несколько сотен миллионов 16-битных значений (~100-500 миллионов), и мне нужно отображать что угодно, от нескольких сотен выборок до всего захвата, по мере увеличения масштаба пользователя.

Когда вы уменьшаете масштаб, вся система получает огромный удар по производительности, так как она загружает огромный кусок из файла.

Просто сегодня утром я подумал, что было бы эффективнее "пройтись" по файлу при разрешении экрана пользователя. Вы не можете физически отображать что-либо между пикселями в любом случае. Это не решает проблему огромного размера файла в памяти.

Могу ли я взять огромный набор данных и эффективно распределить его по частям?

Я думал о потоковой передаче от начала до начала + просмотр размера по горизонтали. Это делает очень изменчивый зум, хотя.

Программа использует Python, но я открыт для вызова чего-то в c, если это уже существует.

2 ответа

Ну, я не знаю, действительно ли это вопрос программирования или дизайна в целом.

Для "увеличения" проблемы с визуализациями я предлагаю:

  1. Предварительно рассчитанная / кэшированная версия для некоторых уровней масштабирования. В идеале градация должна рассчитываться на основе поведения пользователя.
  2. Когда пользователь увеличивает масштаб, вы одновременно
    • рассчитайте "правильные" данные или загрузите предварительно вычисленные агрегированные данные более глубокого слоя масштабирования и обрежьте их по вашему виду
    • обманывать путем рендеринга данных с низким разрешением из предыдущего слоя или сглаживать их в некотором приближении (но обязательно как-то сообщить пользователю, что данные не завершены)

Помимо этого, подумайте, сможете ли вы оптимизировать способ хранения данных. Деревья могут облегчить вашу жизнь, как для частичного чтения / поиска на диске, так и для хранения агрегированных данных.

На мой взгляд, нет смысла отображать даже несколько сотен сэмплов, если они не образуют какое-то изображение / форму. Я думаю, можно посмотреть на сто чисел, если они правильно структурированы (окрашены). Несколько сотен - сомневайтесь в этом - здесь вы заменяете фактические данные некоторой визуализацией (графики, диаграммы, карты,...).

Чтобы решить проблему, вы можете определить какое-то правило, чтобы вообще не отображать фактические данные. Например, если высота цифры становится меньше, скажем, 10 пикселей, вы отображаете какое-то сообщение selected numbers are from rows 200...300, columns 400..500 или некоторый графический вариант с угловыми координатами и количеством чисел.

Другие вопросы по тегам