"Работа с референсами с обводкой" - тут имелась ввиду работа в фотошопе. Krita - это опенсорсная замена фотошопу в задачах, перечисленных в статье. Так же она может являться заменой Aseprite после настройки.
Пул не подразумевает выделение памяти при создании новых экземпляров (не его задача), он подразумевает выделение памяти под хранение ссылок на отработанные экземпляры для дальнейшего их переиспользования, что слегка отличается от арены как аллокатора памяти.
Это про пул экземпляров одного типа, не более того. Арена подразумевает выделение большого непрерывного блока памяти, внутри которого уже самостоятельно выделять память под экземпляры разных типов, а освобождать не по одному экземпляру, а память арены целиком.
Перечень вредных советов какой-то. Горотины не бесплатны сами по себе + синхронизация может съесть все выигранное время и даже больше + нужна блокировка множественного доступа к ресурсам. Применять их стоит только осознанно и только в подготовленном окружении.
При возвращении указателя, объявлять его при создании переменной
Субъективщина же, скорость может поменяться в худшую сторону внутри метода, если анализатор увидит, что указатель может стать nil.
Используйте for-loop
Тут вообще хрень написана - тесты надо проводить на реальных примерах, а не на пустых циклах. Самый простой случай: обращение по индексу в слайс - for-loop будет медленнее из-за постоянного bounds-check если не сделать дополнительные проверки внутри тела цикла, что приведет к замедлению по отношению к range-loop. В случае range-loop компилятор понимает, что нарушения границ быть не может и не вставляет эти проверки. Сравнять скорость можно только используя флаг компиляции -gcflags=all="-B", отключающий все проверки на границы.
Есть только 3 рациональных варианта использования for-loop:
нужно идти с шагом, отличным от 1.
реверсивный цикл, это можно будет обойти через range-over-func в 1.23.
если коллекция состоит из жирных объектов, которые range-loop будет принудительно копировать, то for-loop становится выгоднее, если ползать в слайс через указатели.
Он не спал, он активно хайпожорил, что это все говно и никому не нужно, покупайте мои ооп-курсы. Всех, кто приходил к нему в тележковый чатик и случайно упоминал запретное слово "ECS" - сначала обсирал, а потом просто банил. Почему мне в принципе смешно от ситуации - я автор этого фрейма, который он 4 года назад назвал поделием школьника, а теперь продает на нем курсы, хотя он уже устарел и не поддерживается. :)
Какой "чистый код", он анонсировал курс по ECS, который 4 года назад яростно хейтил, причем на том же фреймворке, который и поливал тогда говном. Конъюктурщик чистой воды. Для любителей "чистого кода" в геймдеве (а не в разработке бизнес-приложений), где важна производительность, а не максимальное распиливание на абстракции - есть вот такое занимательное видео: https://www.youtube.com/watch?v=oFiY7EEtAW4
Нет, имелось ввиду, что после настройки пары циферок и нажатия на апаратную кнопку отладчика происходил множественный переход с конечным адресом в 0. Это не мешало обычной работе и срабатывало только при попытке входа в сервис-монитор.
Да, но там много делать не нужно было, достаточно было поправить адрес в блоке памяти, куда писались настройки принтера и прочий мусор, а в скорпионе было модифицированное местами пзу - переход в итоге делался по новому адресу в пзу, который в итоге приводил к переходу в 0 (reset). Точнее сказать уже не смогу, последний раз эту железку видел более 25 лет назад.
Еще как писали. У меня как раз был такой - ZS Scorpion 256 с аппаратным отладчиком. Там так же происходила запись в определенные регистры и вызов прерываний для переключения страниц. Вот этим и пользовались, записывая мусор, что приводило либо к подвисанию, либо к рестарту.
Разница в передаче по указателю/значению начинается на структурах от 16 байт и выше (ниже - выгоднее передавать по значению по возможности) - тест в статье ничего не показывает.
Про "недвусмысленность" эсперанто говорят лишь те, кто не пробовал его выучить. На самом деле такая же каша из устоявшихся заимствованных выражений без объяснений почему так, хотя суть языка как раз в получении новых слов склеиванием старых, суффиксами и окончаниями (как в немецком та же ручка - kugelschreiber). Например: изучение - lernado. книга - libro. учебник - lernolibro (книга для изучения). школьник - lernejano. но, внезапно: учитель - instruisto (хотя должен быть по идее edukisto, но это, внезапно, воспитатель/педагог). инструктор - instruisto. изучающий - studento. студент - studento (хотя должен быть studisto). учащийся - studento. ученик - studento (хотя должен быть lernisto).
"Работа с референсами с обводкой" - тут имелась ввиду работа в фотошопе. Krita - это опенсорсная замена фотошопу в задачах, перечисленных в статье. Так же она может являться заменой Aseprite после настройки.
Почему не krita - и для работы с референсами с обводкой и для пиксельарта?
Пул не подразумевает выделение памяти при создании новых экземпляров (не его задача), он подразумевает выделение памяти под хранение ссылок на отработанные экземпляры для дальнейшего их переиспользования, что слегка отличается от арены как аллокатора памяти.
Это про пул экземпляров одного типа, не более того. Арена подразумевает выделение большого непрерывного блока памяти, внутри которого уже самостоятельно выделять память под экземпляры разных типов, а освобождать не по одному экземпляру, а память арены целиком.
Перечень вредных советов какой-то. Горотины не бесплатны сами по себе + синхронизация может съесть все выигранное время и даже больше + нужна блокировка множественного доступа к ресурсам. Применять их стоит только осознанно и только в подготовленном окружении.
Субъективщина же, скорость может поменяться в худшую сторону внутри метода, если анализатор увидит, что указатель может стать nil.
Тут вообще хрень написана - тесты надо проводить на реальных примерах, а не на пустых циклах. Самый простой случай: обращение по индексу в слайс - for-loop будет медленнее из-за постоянного bounds-check если не сделать дополнительные проверки внутри тела цикла, что приведет к замедлению по отношению к range-loop. В случае range-loop компилятор понимает, что нарушения границ быть не может и не вставляет эти проверки. Сравнять скорость можно только используя флаг компиляции
-gcflags=all="-B"
, отключающий все проверки на границы.Есть только 3 рациональных варианта использования for-loop:
нужно идти с шагом, отличным от 1.
реверсивный цикл, это можно будет обойти через range-over-func в 1.23.
если коллекция состоит из жирных объектов, которые range-loop будет принудительно копировать, то for-loop становится выгоднее, если ползать в слайс через указатели.
Он не спал, он активно хайпожорил, что это все говно и никому не нужно, покупайте мои ооп-курсы. Всех, кто приходил к нему в тележковый чатик и случайно упоминал запретное слово "ECS" - сначала обсирал, а потом просто банил. Почему мне в принципе смешно от ситуации - я автор этого фрейма, который он 4 года назад назвал поделием школьника, а теперь продает на нем курсы, хотя он уже устарел и не поддерживается. :)
Какой "чистый код", он анонсировал курс по ECS, который 4 года назад яростно хейтил, причем на том же фреймворке, который и поливал тогда говном. Конъюктурщик чистой воды.
Для любителей "чистого кода" в геймдеве (а не в разработке бизнес-приложений), где важна производительность, а не максимальное распиливание на абстракции - есть вот такое занимательное видео: https://www.youtube.com/watch?v=oFiY7EEtAW4
Это в коде еще lifetime-ов не было, количество знаков пунктуации удвоилось бы.
Нет, имелось ввиду, что после настройки пары циферок и нажатия на апаратную кнопку отладчика происходил множественный переход с конечным адресом в 0. Это не мешало обычной работе и срабатывало только при попытке входа в сервис-монитор.
Да, но там много делать не нужно было, достаточно было поправить адрес в блоке памяти, куда писались настройки принтера и прочий мусор, а в скорпионе было модифицированное местами пзу - переход в итоге делался по новому адресу в пзу, который в итоге приводил к переходу в 0 (reset). Точнее сказать уже не смогу, последний раз эту железку видел более 25 лет назад.
Еще как писали. У меня как раз был такой - ZS Scorpion 256 с аппаратным отладчиком. Там так же происходила запись в определенные регистры и вызов прерываний для переключения страниц. Вот этим и пользовались, записывая мусор, что приводило либо к подвисанию, либо к рестарту.
Аналогично, только поднял в докере https://github.com/usememos/memos без доступа извне - вполне удобно и без тегов, ищет по словам в заметках.
PowerBlade, SpinTales, NinjaGaiden, BattleToads&DoubleDragons, Jackal, SnakeRattle&Roll
Раз были указаны в сравнении go/rust - что предлагает argentum в качестве интерфейсов/трейтов?
Разница в передаче по указателю/значению начинается на структурах от 16 байт и выше (ниже - выгоднее передавать по значению по возможности) - тест в статье ничего не показывает.
Я хотел того же и так же "купился" в свое время :)
Про "недвусмысленность" эсперанто говорят лишь те, кто не пробовал его выучить. На самом деле такая же каша из устоявшихся заимствованных выражений без объяснений почему так, хотя суть языка как раз в получении новых слов склеиванием старых, суффиксами и окончаниями (как в немецком та же ручка - kugelschreiber).
Например:
изучение - lernado.
книга - libro.
учебник - lernolibro (книга для изучения).
школьник - lernejano.
но, внезапно:
учитель - instruisto (хотя должен быть по идее edukisto, но это, внезапно, воспитатель/педагог).
инструктор - instruisto.
изучающий - studento.
студент - studento (хотя должен быть studisto).
учащийся - studento.
ученик - studento (хотя должен быть lernisto).
Обобщения они зовутся по-русски, а так да, generics.
Что делать с CalDav (календарь) и CardDav (контакты), построенных поверх WebDav? У них альтернатив вменяемых нет (особенно у CalDav).