В моем приложении Android будут использоваться большие и очень большие файлы (т.е. от 10 МБ до 2 ГБ).
Мне всегда было интересно, какое оборудование используется смартфонами для стабильного хранения, а также то, что софт (чтение/поиск файлов) здесь одинаковый, как для жестких дисков ПК. Я попытался найти информацию об аппаратных средствах и получить некоторую картину об этом (внутреннее хранилище, SD-карта), но ни один из источников, которые я проверил, не является исчерпывающим и/или достаточно конкретным. Мои (взаимосвязанные) вопросы:
- В чем основные отличия, которые я должен учитывать при чтении больших файлов на "современном" смартфоне (например, на телефоне Android 2.2), по сравнению с тем же, что и приложение Java для ПК? (с точки зрения производительности чтения/чтения дисков, очевидно, операционная память для мобильных телефонов меньше, чем на ПК, поэтому это необходимо учитывать в случае буферов и т.д.).
- Каковы (существенные) основные различия между стабильным оборудованием для хранения, используемым в смартфонах, по сравнению с жесткими дисками ПК? (Я знаю, что это очень широкий вопрос, поэтому я даже ценю очень короткий ответ здесь и, возможно, несколько надежных внешних URL-адресов).
- В терминах
InputStream
чтения и поиска (skipBytes) существует разница (например, на Android) между использованием внутреннего хранилища и SD-картой (я намеренно не писал "внешнее хранилище", потому что это не обязательно SD-карта на каждом устройстве)? Карта SD медленнее? - Например, я хотел бы прочитать 2 МБ данных из файла 2 ГБ, и эти данные 2 МБ распределены во многих разных/отдаленных частях файла. Все смещения известны, поэтому я создаю восходящий порядок смещений, а затем использую
BufferedInputStream.read()
(например, вDataInputStream
) для их чтения (и используяskipBytes()
для поиска там, где это необходимо). Поэтому в базовой файловой системе это может потребовать "прохождения" всего 2 ГБ файла. (Например, Android использует функции linux для поиска в файле, когда это необходимо.) Тем не менее, он ищет такой же эффективный, как на жестком диске ПК? Что относительно SD-карты и внутренней памяти с точки зрения эффективности поиска? - Каковы типичные скорости чтения данных? (внутреннее хранилище смартфонов против SD-карты и ПК без жесткого диска SSD)
Я знаю, что бенчмаркинг для моего конкретного приложения является обязательным, но я бы тоже приветствовал теоретическое разъяснение в этом вопросе.
ВАЖНО: когда я спрашиваю, что "... ищет такой же эффективный, как на жестком диске ПК?", я не только (подразумеваю) означает абсолютные значения, но и механизм. То есть, если он работает на основе одних и тех же логических принципов (= если возможно, пропускать большие части) или есть некоторые недостатки (например, такие попытки "проскакивания" невозможны на SD-карте, и, таким образом, пропуск намного больше - - т.е. непропорционально - бесполезно на аппаратном обеспечении смартфона, чем на жестком диске ПК).