Skip to content

Производительность и сравнение ​

Замеры на одном телефоне: vivo PD2536, Android 16, Wi-Fi, одна подписка Remnawave, локация «Нидерланды» во всех трёх приложениях (выход проверен по cdn-cgi/trace: loc=NL), 27.10.2026.

RVC 1.0.8INCY 3.8.2Happ 4.9.0
Размер установленного APK16,5 МБ53,8 МБ63,8 МБ
Холодный запуск (среднее из 3)156 мс742 мс303 мс
Память с подключённым VPN (PSS)88 МБ135 МБ211 МБ
Процессы / потоки1 / 652 / 1053 / 180
Кадров за 10 с на главном экране при подключении2913917
CPU на 100 МБ скачивания (Chrome, медиана)2,0 с2,2 с2,4 с
CPU в фоне, простой (медиана из 3 по 60 с)0,5 % ядра0,3 % ядра0,6 % ядра

Скорость через туннель у всех одинаковая — 50 МБ скачиваются за 6–7 секунд (около 60–70 Мбит/с): она упирается в сервер, а не в клиент.

Что изменилось с прошлого замера (RVC 1.0.6, INCY 3.7.9, Happ 4.8.0, «Автовыбор»): RVC стал запускаться быстрее (203 → 156 мс) за счёт Baseline Profile и одной операции Keystore на старте; INCY перестал перерисовывать главный экран каждый кадр и в простое теперь тратит меньше всех. Happ по-прежнему рисует около 90 кадров в секунду на открытом главном экране.

Что изменилось в 1.0.8 ​

Запуск ускорен с двух сторон:

  • Baseline Profile. Список методов, которые нужны при запуске, прокрутке главного экрана и в настройках, встроен в APK. Android компилирует их заранее при установке, а не интерпретирует при первых запусках. Профиль собирается модулем :baselineprofile на эмуляторе.
  • Одна операция Keystore вместо пяти и больше. Раньше каждый зашифрованный файл (настройки, подписки, серверы, профили) расшифровывался ключом из Android Keystore — это вызов системного сервиса на каждый файл. Теперь файлы шифруются ключом данных, а ключом Keystore защищён только он.

Замер на эмуляторе (Android 15, программная отрисовка, поэтому абсолютные значения выше, чем на телефоне), холодный запуск после компиляции по профилю:

1.0.71.0.8
Холодный запуск2,3–2,9 с0,9–1,4 с
Чтение сохранённых данных120–375 мс55–125 мс

Почему не hev-socks5-tunnel ​

INCY и Happ передают пакеты через hev-socks5-tunnel и локальный SOCKS-порт. RVC так не делает: на 127.0.0.1 не должно быть портов, через которые другие приложения могли бы найти прокси и узнать IP сервера (см. Безопасность). Связать hev с ядром через unix-сокет нельзя без потери UDP — SOCKS требует для него UDP-порт на localhost. А профиль показал, что время уходит на системные вызовы, которые hev делает так же — на каждый пакет.

Интерфейс ​

Главный экран рисует кадры только когда на нём что-то меняется — таймер и скорость раз в секунду. Happ на открытом главном экране рисует около 90 кадров в секунду, INCY с версии 3.8 — тоже только при изменениях. Живой фон растрируется один раз в текстуру; при прокрутке средний кадр — около 6 мс при бюджете 8,3 мс на 120 Гц.

Как мерили ​

  • CPU — сумма utime+stime всех процессов приложения из /proc/<pid>/stat;

  • память — dumpsys meminfo, кадры — dumpsys gfxinfo, запуск — am start -W;

  • профиль — simpleperf record --app на profileable-сборке.

  • скачивание — Chrome открывает speed.cloudflare.com/__down?bytes=50000000, считается CPU процессов VPN-приложения, медиана из 4–6 загрузок, пересчёт на 100 МБ;

  • запуск — am start -W после остановки приложения, первый запуск (прогрев кеша) не считается.

Простой в фоне зашумлён трафиком других приложений. В Happ на этом телефоне включён обход для части приложений («Прокси для выбранных приложений» → «Обход»), поэтому через его туннель в простое идёт меньше трафика; Chrome при этом идёт через VPN, что проверено перед замером скачивания.