M
Minutri | Unity
@minutri651 подп.
1.5Kпросмотров
28 мая 2024 г.
Score: 1.6K
📈 Увеличение производительности с помощью IL2CPP. SPARSEHASH Вышла интересная статья от техлида Алексея Мерзликина. В ней он рассматривает Sparse_hash_map и Dense_hash_map — форматы хранения хешмапы в плюсах. И оба они гугловские. Думаю, основной аудитории канала, обяъяснять, что такое хеш-таблица не нужно. Но напишу о двух из рассматриваемых способах хранения: 🥱 Sparse_hash_map — мало жрет памяти, но работает медленней. 🔥 Dense_hash_map — жрет памяти больше, но и работает быстрее. Метаданные в IL2CPP, сгенерированные для каждого типа и используемые для таких задач, как вызов виртуального метода, практически не проанализированы в интернете. Следовательно, это ценная информация. — А теперь к сути статьи: Дело в том, что IL2CPP использует Il2CppHashMap либо в том, либо в другом формате, в зависимости от: #define IL2CPP_USE_SPARSEHASH (IL2CPP_TARGET_ANDROID || IL2CPP_TARGET_IOS) "Это означает, что sparse hash используется для мобильных платформ, а dense — для других, таких как ПК, консоли и т. д." Для чего это сделано? Вероятней всего для того, чтобы на мобилках экономить память. Но всегда ли это нужно? Я думаю нет. — Хорошо, но что если мы принудительно в плюсовом коде изменим IL2CPP_USE_SPARSEHASH на ПК на 1 и сделаем замеры скоростей. Сравним, насколько медленней работает тот или иной вариант. Для примера, автор приводит сравнения, а также использует Zenject для своих тестов. В нем используются "reflection and instance creation", поэтому пример нагруженный, хороший. — Он получает разницу в производительности — в 2 раза. Таким образом, заключает он, что это важный параметр и в случае необходимости, можно его изменять. 👀 Что ж, я со своей стороны отмечу, что тест был не совсем корректный: Во-первых, не было проверки на мобильном(ых) устройстве(ах). Во-вторых, не было кейсов, по мимо Zenject. 🙂 Тем не менее, информация была полезна, спасибо автору за неё. Анализируя другие статьи, можно утверждать, что dense одна из наиболее быстрых реализаций (конечно, за вычетом некоторых её особенностей, касаемых, к примеру, перестроения). Следовательно, большой необходимости использовать другие варианты — нет. И это хорошо, что именно её можно использовать без особых проблем в коде, проходящем через IL2CPP. Если интересна тема IL2CPP, ставьте 👍 #thematic_post #il2cpp
1.5K
просмотров
2303
символов
Да
эмодзи
Нет
медиа

Другие посты @minutri

Все посты канала →
📈 Увеличение производительности с помощью IL2CPP. SPARSEHAS — @minutri | PostSniper