Должен ли я перейти с буферизованного чтения на приложение in-memory / tokenize для Android-приложения для чтения файла из 100 000 строк? - PullRequest
0 голосов
/ 13 июля 2011

В настоящее время я загружаю текстовый файл, содержащий 100 000 строк, в SortedMap с использованием буферизованного чтения. Должен ли я отказаться от этого подхода и вместо этого загрузить весь файл в память, а затем токенизировать по переводу строк в SortedMap? Обратите внимание, я должен проанализировать каждую строку, чтобы извлечь ключ и создать объект поддержки для каждого ключа, который я затем вставляю в SortedMap. Размер файла составляет менее 4 МБ, что соответствует ограничениям на размер файла в памяти Android. Мне интересно, стоит ли пытаться переключиться на подход, основанный на оперативной памяти, или полученное ускорение просто не стоит.

Кроме того, HashMap будет намного быстрее, чем SortedMap? Мне нужен только поиск по ключу, и я могу жить без отсортированных ключей, если это необходимо, но было бы неплохо иметь с собой. Если структура лучше, чем то, что я использую, дайте мне знать, и если у вас есть какие-либо советы по скорости Android, связанные с этой проблемой, пожалуйста, укажите их тоже.

- Рошлер

1 Ответ

1 голос
/ 13 июля 2011

Мне неясно, почему было бы проще загрузить весь файл в память и затем токенизировать.Читать строку за раз и анализировать ее таким образом довольно просто, не так ли?В то время как я полностью загружаю вещи одновременно, когда действительно упрощает ситуацию, я не вижу, чтобы здесь было бы намного проще.

Что касается SortedMap против HashMap - обычно поиск HashMap - это O (1), если у вас не много коллизий хешей, но поиск SortedMap - только O (log n), если нет равных элементов.Насколько дороги сравнения по сравнению с хеш-вычислениями в вашей объектной модели?С 100 000 элементов у вас будет около 16-17 сравнений на поиск.В конечном счете, я бы не хотел угадать , что будет быстрее - вам следует проверить , как и для всех вариантов производительности.Посмотрите также на использование памяти ... Я бы ожидал, что SortedMap будет использовать меньше памяти, но я легко могу ошибаться.

...