Alexey
да, я так обычно и делаю
Alexey
было бы интересно рассказать про performance optimizations в RN
Aleksei
мне было бы реально интересно послушать про изображения, вот прям под капотом. начиная от момента как его запрашивают с сервака, до того как оно на экране появится)
Alexey
Aleksei
Alexey
NSURLSession запрос на сервак - грузится файл - кешируется - отображается в нативном компоненте
Alexey
я такое на 20 минут не растяну (
Aleksei
так еще интересное то начинается после загрузки, как оно грузится в ram, потом в видеопамять)
Alexey
так это происходит автоматически, как в любом нативном приложении
Alexey
у разраба нет контроля над этим
Alexey
знаешь что интересно было бы
Alexey
создать компонент, который мог бы шарить вьюхи
Aleksei
на самом деле есть) у меня так было, я кароч сначала большие картинки грузил через Image и iPad вылетал по памяти, пришлось через opengl делать
Alexey
О_о
Alexey
расскажи
Ilya
Alexey
окей, я не знал
Alexey
расскажите пожалуйста
Alexey
(я знаю нативку постольку поскольку, т.к. начал читать инфу только в процессе работы)
Alexey
и мои знания довольно поверхностны и не систематичны
Alexey
с удовольствием расширю их
Ilya
Ну ты можешь что угодно с ней делать, пережать, например
Alexey
лучше сразу запросить правильное разрешение с сервака
Ilya
Да это не сильно ресурсоемкая задача
Alexey
это можно чисто за счёт GPU сделать?
Ilya
Ну берешь и пишешь код для гпу просто, так что, думаю, да
Alexey
интересно, как это yoga делает
Ilya
Еще иногда одна и та же картинка в разных размерах нужна, не качать же по 10 раз
Alexey
я, честно говоря, полагал что iOS(и Android, вероятно) жмёт всё сам оптимальным способом, если задать не родной размер изображения
Horse
Horse
но память жрет
Horse
как и в вебе собственно
Ilya
Вот только в вебе ты с этим особо ничего не сделаешь)
Horse
Ilya
Тоже на сервере делать?
Horse
Ilya
У меня есть доступ к гпу и попиксельно к фотке?
Ilya
В вебе
Horse
Aleksei
ну вообще просто так для gpu не попишешь, только через апи какое то
Horse
Horse
просто так)
Aleksei
ну на шейдерах особо не разбежишься, там же про другое немного
Horse
WebGL 2.0 — Построена на основе OpenGL ES 3.0
Horse
тоже самое что в мобилках
Alexey
вот вроде бы интересная статья http://nshipster.com/image-resizing/
Aleksei
мне вот другое непонятно во всем этом процессе, то есть допустим я загружаю фотку, ее надо раз куда сохранить, допусти либо в память, либо на диск, потом мне нужно ее декодировать, чтобы уже цвета пикселей в видяху загнать. то есть получается картинка и в памяти ram и в видеопамяти
Alexey
ну, я сильно сомневаюсь что ты можешь хранить изображения в видеопамяти
Aleksei
ну они туда все равно так или иначе попадут)
Horse
Horse
Aleksei
а как?)
Aleksei
чтобы декодировать
Aleksei
ну а вот интересно все же 🙂
Aleksei
я вот знаю что на ios можно картинку хранить в файловой системе, а он уже оттуда может сразу в видеопамять загонять. не помню как называется
Aleksei
ну у текстур определенный формат под видяху)
Aleksei
текстуры же получается без компрессии идут, не так как jpeg тот же?
Horse
Horse
https://developer.apple.com/library/content/documentation/3DDrawing/Conceptual/OpenGLES_ProgrammingGuide/TechniquesForWorkingWithTextureData/TechniquesForWorkingWithTextureData.html
Сергій
https://youtu.be/WH9AFhgwmDw
Сергій
Немного деталей процесса
Aleksei
а вот еще если с картинками хоть как то понятно, то с видюхами я вообще не понимаю как работает все)
Aleksei
Alexey
ну не совсем
Alexey
сейчас, если ты загружаешь, скажем, твиттер фид
Alexey
и у тебя 20 постов одного человека, то 20 раз будет создана новая аватарка
Alexey
довольно глупо создавать каждый раз новую картинку, верно?
Alexey
@nullcpp, скажи пожалуйста, есть ли в Android возможность выполнять операции в бэкграунде?
Alexey
отлично, можно рассказать про это 🙂
Сергій
Alexey
отлично, погуглю
Сергій
😄
Сергій
+ HandlerThread, Loader, Thread, IntentService