CPDT (Cross Platform Disk Test) — приложение для измерения скорости постоянной памяти (внутренняя память смартфона/NAND/NVMe/UFS, SD карта) и оперативной памяти (ОЗУ, RAM).
Приложение создает нагрузку на ОЗУ телефона, максимально заполняя оперативную память. Это необходимо, чтобы получить реалистичные результаты (а не погоду на Луне, как в других бенчмарках) и обойти влияние кеша. Как побочный результат у небольшого процента пользователей приложение может вылетать, а у некоторых даже перезагружается телефон — других вариантов обхода кеша в Андроид нету. Если вас такой расклад не устраивает — не устанавливайте приложение и не оставляйте негативные оценки.
Имеется база данных с результатами для различных устройств, где вы можете увидеть показатели, например, Samsung Galaxy S20 и сравнить ваши результаты.
Помимо Android/Chrome OS приложение доступно на Windows и macOS, что позволяет сравнить производительность вашего телефона с настольными компьютерами, Mac и ноутбуками (SSD/HDD).
Версии для Mac и Windows: maxim-saplin.github.io/cpdt_results/?download
Тесты:
Постоянная память
- Последовательная запись (Sequential write)
- Последовательное чтение (Sequential read)
- Произвольная запись (блок 4КБ, Random write)
- Произвольное чтение (блок 4КБ, Random read)
Оперативная память (ОЗУ, RAM)
- Копирование блоков в памяти (Memory copy)
Результаты тестов — это пропускная способность, выраженная в МБ/с (мегабайтах в секунду).
Настройки:
Размер тестового файла-: 0.5Гб, 1Гб, 2Гб, 4Гб, 8Гб, 16Гб
Буферизация записи: Вкл, Выкл
Кэширование данных в памяти: Вкл, Выкл
Для последовательных тестов строятся линейные графики скорости, для произвольных тестов — гистограммы. Результаты могу быть экспортированы в CSV/Excel для дальнейшего анализа (приводятся сведения по позициями в тестовом файле и измеренным скоростям для каждого из блоков данных).
Чем CPDT отличается от других бенчмарков? Большинство приложений тестируют процессор и/или графическую подсистему (такие как Geekbench, AnTuTu) — тестов постоянной памяти там нету.
Бенчмарки памяти редко содержат настройки помимо размера тестового файла. Контролировать буферизацию и кэширование невозможно (например в Androbench) либо требуется перезагрузка устройства для исключения влияния кеша (A1 SD).
Кэширование — механизм, сильно влияющий на результаты. При включенном кэше тесты на чтение измеряют комбинированную скорость ОЗУ и диска — это не изолированный тест, он не расскажет о производительности сценариев «холодного» чтения (загрузка устройства, запуск приложения). Схожая ситуация с буферизацией, когда затрагиваются тесты на запись.
В CPDT есть настройки, минимизирующие влияние кэша и буферизации и позволяющие сопоставить результаты разных устройств и ОС.
Почему скорость памяти важна? Этот параметр прямо влияет на общий уровень «воспринимаемой» производительности устройства: определяет время «холодного» запуска приложения, «фризы/лаги» приложений при обращении к диску (отрисовка страницы из кэша браузером, пролистывание галереи картинок или загруженной ленты Инстаграм и т.п.).
На Chrome OS для доступа к SD карте приложению необходимо дать разрешение (Storage permission).
! Поддержка OTG не гарантирована! Кард-ридер или флешка подключенные по USB проводу через зарядный разъем могут быть доступны для теста, а могут и не быть. Например Samsung Galaxy S8 (Android 8) и Note 10 (A10) работают. Xiaomi Mi8SE (A9), Meizu 16th (A8.1) и LG Nexus 5x (A6) не работают (но в системе устройство видно). Почему так? У Андроид исторически есть проблемы с моделью работы с подключаемыми устройствами. Некоторые производители монтируя устройство и делают его доступным через стандартный API [Context.getExternalFilesDir()]. В других случаях нужно танцевать с бубном и разбираться в конкретных прошивках.
Исходный код: github.com/maxim-saplin/CrossPlatformDiskTest