Unity: чтение и обновление из большого файла CSV - PullRequest
0 голосов
/ 01 июня 2018

У меня есть очень большой файл CSV (1 миллион + строк) с четырьмя столбцами данных time, id, x и y.Вот пример:

t   id  x   y
434 84  0   0
435 84  28.22   -4.5
435 611 1895.13 755.17
435 872 2401.08 159.12
435 65  0   226.39
436 84  50.44   -4.5
436 611 1890.63 732.5
436 872 2373.9  151.04
436 990 2614.97 372.74
...

В моем моделировании по прошествии времени мне нужно сделать одну из трех вещей:

  1. Если это первый раз, когда идентификатор имеет создать объект с этим идентификатором в координатах x, y

  2. Если объект с идентификатором уже существует обновить координаты этого объекта x, y

  3. Если идентификатор больше не появляется удалить этот объект

Я предполагаю, что это очень интенсивноЧтобы сохранить текущий таймер, проверяйте CSV каждую секунду, найдите все строки с текущим временем и выполните один из вышеуказанных шагов.Есть ли более эффективный способ обработки данных временных рядов в симуляциях Unity?

1 Ответ

0 голосов
/ 01 июня 2018

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

  • Может ли компонент, обновляющий этот CSV, вместо этого напрямую взаимодействовать с Unity3d?Использование, например, сокетного соединения позволит избежать необходимости постоянно сохранять и считывать эту информацию на диск и с диска.Однако это зависит от того, как создаются данные CSV, очевидно,
  • Не могли бы вы разбить CSV на более мелкие файлы?Например, по одной на каждую метку времени?Таким образом, на каждом этапе обновляется симуляция с меньшими затратами.
  • Можете ли вы уменьшить частоту обновлений?Необходимо ли обновлять каждую секунду?
  • Или, вы можете только читать из CSV каждые, скажем, 10 секунд, загружать все данные в течение следующих 10 секунд (например, все временные метки в этом диапазоне)сохранить их в памяти, а затем в течение следующих 10 секунд использовать только информацию из памяти для обновления вместо повторного чтения файла?Это уменьшит ваши обращения к диску.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...