Pull to refresh
109
0.5
Send message

Исходников нет, но мы не сдадимся: как и зачем я портировал более старый Android, чем стоял «с завода»?

Level of difficulty Medium
Reading time 13 min
Views 8K
image


Моддинг-сцена с разработкой и портированием кастомных прошивок для Android-устройств существует вот уже более 10 лет. В основном, энтузиасты пытаются проапгрейдить свои устройства путем портирования более свежих версий Android, чем предлагает производитель девайса. Чего уж говорить, если Galaxy S III, которому уже 12 лет стукнуло, получил неофициальный апгрейд до Android 14. Порой мне в голову приходят различные, весьма странные моддерские мысли: например, почему бы не портировать на старенький смартфон… ещё более старую версию Android, дабы посмотреть «что будет». Казалось бы «портировал и портировал», но в процессе работы я столкнулся с множеством интересных нюансов и особенностей работы Android, о которых хотел бы рассказать и вам — моим читателям! Сегодняшняя статья будет в классическом «научпоп»-стиле без кода, зато с подробными объяснениями одной из техник портирования Android-прошивок путем патчинга скриптов для конфигурации системы и подмены Board-specific библиотек, дабы система «увидела» всё необходимое железо! Интересно? Тогда жду вас под катом!
Читать дальше →
Total votes 62: ↑61 and ↓1 +60
Comments 25

The Elder Scrolls III: Morrowind: чем цепляет эта нестареющая классика?

Level of difficulty Easy
Reading time 20 min
Views 12K
image

Попробуйте вспомнить, как вы впервые играли в The Elder Scrolls III: Morrowind. Запустили и, просмотрев заставку, оказались запертым в трюме корабля, проспав почти всю дорогу настолько крепко, что даже вчерашний шторм не разбудил вас. Ступив на берег и оформив бумаги, в которых указали свою расу, под каким созвездием родились и чем промышляете, вы попали в огромный, мрачный и почти безграничный мир, где, как тогда казалось, можно всё. Началось путешествие, и вы, овеянный чувством приключения, под замечательные музыкальные композиции Джереми Соула отправляетесь в дорогу. У ваших ног весь Вварденфелл – место, где джунгли сменяются пепельными пустынями, а зелёные леса – насаждениями гигантских грибов. На вашем пути встретится много интересного, а игра предоставит большое количество возможностей в развитии вашего альтер эго и увлечёт глубокой историей, множеством красивых и живых городов (каждый из которых отличается не только географическим расположением или названием, но даже архитектурным стилем и общим настроением), захватывающими квестами, а также ощущением причастности к чему-то великому.

Огромная свобода как для ролевого отыгрыша, так и поведенческая, побуждала к изучению всех окрестных земель и возможностей, предоставляемых игрой. Поэтому я убеждён, что большинство из вас, попробовав The Elder Scrolls III: Morrowind на релизе, просто не могло не влюбиться в этот проект компании Bethesda Game Studios и в наши дни вспоминаете её с огромным пиететом. Да, в 2002 году Morrowind казался чем-то невозможным, чем-то, что способно увлечь на десятки и сотни часов, и, скажу вам, с годами мало что изменилось. Игра воистину глубока и масштабна, в неё не играют, а в ней живут. Поэтому, если вы услышите от кого-то, что он прошёл Morrowind, не верьте ему, он наркоман бредит =)
Читать дальше →
Total votes 58: ↑56 and ↓2 +54
Comments 59

Индексы в PostgreSQL — 8

Reading time 11 min
Views 27K

Мы уже рассмотрели механизм индексирования PostgreSQL, интерфейс методов доступа и все основные методы доступа, как то: хеш-индексы, B-деревья, GiST, SP-GiST и GIN. А в этой части посмотрим на превращение джина в ром.

RUM


Хоть авторы и утверждают, что джин — могущественный дух, но тема напитков все-таки победила: GIN следующего поколения назвали RUM.

Этот метод доступа развивает идею, заложенную в GIN, и позволяет выполнять полнотекстовый поиск еще быстрее. Это единственный метод в этой серии статей, который не входит в стандартную поставку PostgreSQL и является сторонним расширением. Есть несколько вариантов его установки:

  • Взять пакет yum или apt из репозитория PGDG. Например, если вы ставили PostgreSQL из пакета postgresql-10, то поставьте еще postgresql-10-rum.
  • Самостоятельно собрать и установить из исходных кодов на github (инструкция там же).
  • Пользоваться в составе Postgres Pro Enterprise (или хотя бы читать оттуда документацию).

Ограничения GIN


Какие ограничения индекса GIN позволяет преодолеть RUM?

Во-первых, тип данных tsvector, помимо самих лексем, содержит информацию об их позициях внутри документа. В GIN-индексе, как мы видели в прошлый раз, эта информация не сохраняются. Из-за этого операции фразового поиска, появившиеся в версии 9.6, обслуживается GIN-индексом неэффективно и вынуждены обращаться к исходным данным для перепроверки.

Во-вторых, поисковые системы обычно возвращают результаты в порядке релевантности (что бы это ни означало). Для этого можно пользоваться функциями ранжирования ts_rank и ts_rank_cd, но их приходится вычислять для каждой строки результата, что, конечно, медленно.

Метод доступа RUM в первом приближении можно рассматривать как GIN, в который добавлена позиционная информация, и который поддерживает выдачу результата в нужном порядке (аналогично тому, как GiST умеет выдавать ближайших соседей). Пойдем по порядку.
Читать дальше →
Total votes 20: ↑20 and ↓0 +20
Comments 19

Индексы в PostgreSQL — 7

Reading time 19 min
Views 75K

Мы уже познакомились с механизмом индексирования PostgreSQL и с интерфейсом методов доступа, и рассмотрели хеш-индексы, B-деревья, индексы GiST и SP-GiST. А в этой части займемся индексом GIN.

GIN


— Джин?.. Джин — это, кажется, такой американский спиртной напиток?..
— Не напиток я, о пытливый отрок! — снова вспылил старичок, снова спохватился и снова взял себя в руки. — Не напиток я, а могущественный и неустрашимый дух, и нет в мире такого волшебства, которое было бы мне не по силам.

Лазарь Лагин, «Старик Хоттабыч».

Gin stands for Generalized Inverted Index and should be considered as a genie, not a drink.

README

Общая идея


GIN расшифровывается как Generalized Inverted Index — это так называемый обратный индекс. Он работает с типами данных, значения которых не являются атомарными, а состоят из элементов. При этом индексируются не сами значения, а отдельные элементы; каждый элемент ссылается на те значения, в которых он встречается.

Хорошая аналогия для этого метода — алфавитный указатель в конце книги, где для каждого термина приведен список страниц, где этот термин упоминается. Как и указатель в книге, индексный метод должен обеспечивать быстрый поиск проиндексированных элементов. Для этого они хранятся в виде уже знакомого нам B-дерева (для него используется другая, более простая, реализация, но в данном случае это несущественно). К каждому элементу привязан упорядоченный набор ссылок на строки таблицы, содержащие значения с этим элементом. Упорядоченность не принципиальна для выборки данных (порядок сортировки TID-ов не несет в себе особого смысла), но важна с точки зрения внутреннего устройства индекса.

Читать дальше →
Total votes 32: ↑31 and ↓1 +30
Comments 22

Индексы в PostgreSQL — 5

Reading time 22 min
Views 66K

В прошлые разы мы рассмотрели механизм индексирования PostgreSQL, интерфейс методов доступа, и два метода: хеш-индекс и B-дерево. В этой части займемся индексами GiST.

GiST


GiST — сокращение от «generalized search tree». Это сбалансированное дерево поиска, точно так же, как и рассмотренный ранее b-tree.

В чем же разница? Индекс b-tree жестко привязан к семантике сравнения: поддержка операторов «больше», «меньше», «равно» — это все, на что он способен (зато способен очень хорошо!). Но в современных базах хранятся и такие типы данных, для которых эти операторы просто не имеют смысла: геоданные, текстовые документы, картинки…

Тут на помощь и приходит индексный метод GiST. Он позволяет задать принцип распределения данных произвольного типа по сбалансированному дереву, и метод использования этого представления для доступа по некоторому оператору. Например, в GiST-индекс можно «уложить» R-дерево для пространственных данных с поддержкой операторов взаимного расположения (находится слева, справа; содержит и т. п.), или RD-дерево для множеств с поддержкой операторов пересечения или вхождения.

За счет расширяемости в PostgreSQL вполне можно создать совершенно новый метод доступа с нуля: для этого надо реализовать интерфейс с механизмом индексирования. Но это требует продумывания не только логики индексации, но и страничной структуры, эффективной реализации блокировок, поддержки журнала упреждающей записи — что подразумевает очень высокую квалификацию разработчика и большую трудоемкость. GiST упрощает задачу, беря на себя низкоуровневые проблемы и предоставляя свой собственный интерфейс: несколько функций, относящихся не к технической сфере, а к прикладной области. В этом смысле можно говорить о том, что GiST является каркасом для построения новых методов доступа.
Читать дальше →
Total votes 32: ↑32 and ↓0 +32
Comments 8

Как создавали Корсаров

Level of difficulty Easy
Reading time 12 min
Views 9.6K


«Твой двадцатый день рождения
отмечал я в Картахене;
двадцать душ зажёг как свечи
доброй порцией картечи!»


Андрей Корф, «Порт-Ройял».

Что вам приходит в голову, когда вы слышите про «русские видеоигры»? «Атомик Харт»? Смута? Онлайн залипалки «Вартандер» и «Мир кораблей» с танками? Множество локальных инди? Негусто… А давайте я вам расскажу про настоящую российскую игру ААА-класса, которая добилась мировой известности, была очень тепло встречена на родине и на Западе, получила множество продолжений разной степени удачности (отголоски этих продолжений выходят даже сейчас, спустя почти четверть века после релиза!), и зародила, по сути, отдельный жанр, став законодателем целого направления в мировом игростроении? Даже современные игры, вольно или невольно, сравнивают с ней. Ладно, вы всё равно прочитали название статьи, так что хватит нагнетать драму — дамы и господа, «Корсары: Проклятье дальних морей» («Sea dogs» по-заморскому) на страницах Хабра!
Читать дальше →
Total votes 58: ↑55 and ↓3 +52
Comments 19

Что нового в планировщике / оптимизаторе запросов Postgres 16

Level of difficulty Medium
Reading time 18 min
Views 6.1K

PostgreSQL 16 вносит немало улучшений в планировщик запросов и позволяет выполнять многие SQL-запросы быстрее, чем в предыдущих версиях PostgreSQL.

Если вы посмотрите на PG16 release notes, то увидите некоторые из этих улучшений. Но из-за объема изменений, вносимых в каждом выпуске PostgreSQL, невозможно предоставить достаточно подробную информацию о каждом изменении.

В этом посте вы получите глубокое представление о 10 улучшениях, внесенных в планировщик запросов PostgreSQL 16. Для каждого из улучшений будет сравнения выходных данных планировщика PG15 и PG16, а также примеры того, что изменилось, в виде автономного теста, который вы можете попробовать сами.

Читать далее
Total votes 27: ↑27 and ↓0 +27
Comments 0

Dino Crisis: достойна ли внимания сегодня?

Level of difficulty Easy
Reading time 8 min
Views 2.5K

Попробуйте ощутить всю мощь эпохи: в 1998 году на прилавках оказалась Resident Evil 2 – игра, сумевшая поразить и влюбить в себя миллионы игроков по всему миру; в начале нового 1999 года вышел первый Silent Hill, в июле – Dino Crisis, а спустя несколько месяцев зарелизится Resident Evil 3: Nemesis. Кажется, это было золотое время для Survival horror, но всё могло сложиться немного по-другому, ведь изначально первая часть серии Dino Crisis не должна была быть столь похожей на Resident Evil. Планировалось, что она будет содержать в себе больше шутерных механик, количество динозавров на одной локации увеличится, а их интеллект станет гораздо более высоким, нежели чем в релизной версии. Но по различным причинам технического характера этому не суждено было случиться (кстати, под нож попали и некоторые локации).

Несмотря на то, что в наши дни компания Capcom уже много лет не вспоминает о Dino Crisis, (хотя в этом году ей исполняется 25 лет), у неё до сих пор осталось большое количество фанатов, которые мечтают о ремейке/ремастере первых двух частей серии или продолжении (только не таком, как третья часть!). Остаётся лишь фантазировать, как было бы круто погрузиться в знакомый с юности игровой мир, сделанный похожим на Resident Evil 2 Remake образом.

Но если вы не желаете ограничиваться одними лишь фантазиями, а вспомнить, как это было, очень хочется, на выручку приходят как эмуляторы PS1, с помощью которых можно прикоснуться к классике в её первозданном виде, так и фанатские ремастеры, вносящие множество правок и улучшений и позволяющие с удовольствием запустить любимую игру на современных ПК. Но обо всём по порядку.

Читать далее
Total votes 16: ↑15 and ↓1 +14
Comments 4

Sacred: ностальгия, прошедшая проверку временем

Level of difficulty Easy
Reading time 13 min
Views 15K
image

К 2004 году многие игроки уже успели насладиться Diablo II и хотели попробовать что-то новое, что-то, что подарит им те же ощущения и при этом предложит совершенно другой игровой опыт. В этот год вышла Sacred (или, как ее назвал официальный локализатор Акелла, «Князь тьмы»), и тоска по хорошим диаблоидам, несомненно, стала одной из причин ее популярности. Но только ли на этом пытались выехать разработчики, создавая игру, которая в последствии стала для многих любимой? Огромный (при этом бесшовный) и очень красочный мир, словно сошедший со страниц какого-то волшебного произведения, продуманная ролевая система и множество героев на выбор, включая довольно интересных и необычных для данного жанра персонажей, таких как вампиресса, демонесса или серафима. Проект влюблял в себя с первых минут и не отпускал еще долгие дни и недели.

Хочу признаться, что я не поддался чарам этой игры и до сих пор остаюсь верен своей любимой Diablo II. Однако хорошо помню, как все вокруг были увлечены Sacred. Все мои друзья с энтузиазмом обсуждали этот хит, и почти в любом игровом клубе моего города всегда можно было найти хотя бы один компьютер, на котором был запущен Князь тьмы. И, заметьте, это происходило в эпоху доминирования таких проектов, как Counter Strike 1.5 и 1.6, Starcraft и Warcraft 3, а также созданной для нее карты DotA! Даже мой друг, который не очень интересовался играми и залипал в основном в третью часть Героев, поддался влиянию этого игрового наркотика под названием Sacred!

Так что же было в ней такого, благодаря чему небольшая студия Ascaron Entertainment в одночасье проснулась знаменитой, а в её новый (на тот момент) проект с упоением играли во всём мире? В данной статье я постараюсь ответить на этот вопрос, ведь это был один из самых успешных конкурентов Diablo, что, согласитесь, очень достойное звание!
Читать дальше →
Total votes 62: ↑60 and ↓2 +58
Comments 27

Он улетел и не вернётся: что случилось с «Вояджер-1» и что будет дальше

Reading time 4 min
Views 49K

За последние полвека учёные получили огромный объём информации о Вселенной, включая как данные о Солнечной системе и её объектах, так и о дальнем космосе. Большую работу проделали космические аппараты, без них астрономы до сих пор гадали бы, например, что из себя представляет Европа, спутник Юпитера, или какова поверхность Плутона.

«Вояджер-1» и «Вояджер-2» — именно такие аппараты, ставшие надёжными инструментами изучения космоса и служащие человечеству вот уже почти 50 лет. К сожалению, ничто не вечно, и у первого «близнеца» сейчас серьёзные технические проблемы, которые уже вряд ли получится решить. О том, что он изучал, что происходит в настоящее время и будет дальше, — под катом.

Читать далее
Total votes 106: ↑104 and ↓2 +102
Comments 758

Как создавалась Call of Duty 2

Level of difficulty Easy
Reading time 11 min
Views 5.2K


Кто не знает серию Call of Duty? Конечно ее знает каждый, если не просто игрок, то хотя бы фанат шутеров. Поистине культовая, всемирно известная серия, взявшая свои истоки с игр про Вторую Мировую Войну. Многие части были созданы под эгидой Infinity Ward. Помимо игр компания создавала и свои движки, но более ничем не отличилась. Однако, одной лишь серии Call of Duty достаточно, чтобы любить и уважать Ward’ов.

Конкретно Call of Duty 2 вышла в 2005-ом году сначала на ПК, а затем и на Xbox 360. Технически – третья часть серии. Фактически – вторая, и такой мы будем звать ее на протяжении всей статьи. Как же так вышло? Обратимся к хронологии. Очевидно, первой частью стала Call of Duty 2003-го года. Далее к ней вышло DLC, но нам интереснее Call of Duty: Finest Hour, выпущенная Spark Unlimited. Она основана на первой части серии, однако имеет совершенно новый сюжет и не имеет приписки «Expansion pack» как предыдущее дополнение, а также была выпущена лишь на PS2, Xbox 360 и GameCube. С тем количеством контента, что она имеет, она может полноправно называться спин-оффом, что делает ее технически второй игрой (мое непопулярное мнение).

Но мы тут говорим про Call of Duty 2005 года, так что не будем сильно отвлекаться.
Читать дальше →
Total votes 34: ↑32 and ↓2 +30
Comments 0

Об отображении 10-бит цвета с использованием OpenGL (GLFW)

Level of difficulty Easy
Reading time 13 min
Views 3.5K

Вашему внимания предлагается небольшой этюд, посвящённый отображению 10-битного цвета (1024 градаций по каждому каналу) на мониторе через OpenGL при помощи библиотеки GLFW. Под катом мы напишем пару небольших приложений, открывающих два окна, где рассмотрим тестовые изображения в восьмибитном и десятибитном режимах на оборудовании, поддерживающем такую опцию. Включение 10 бит в основном позволяет избавиться от эффектов «полосатости» (также используются термины «бандинг» или «постеризация»), возникающих на протяжённых градиентах со слабо меняющейся интенсивностью, когда вы начинаете видеть границы между отдельными градациями, но по какой-либо причине не хотите пользоваться дизерингом, подмешивая в изображение шум.

Читать далее про тысячу оттенков серого
Total votes 25: ↑25 and ↓0 +25
Comments 85

Что будет, если переименовать суперпользователя? Экспериментируем, удивляемся и расстраиваемся…

Reading time 15 min
Views 21K

В интернете много желающих перебирать пароли к SSH, чтобы получить мощности вашего сервера безвозмездно. Как это можно предотвратить? Отключить вход по паролю? Лениво. Использовать нестандартный порт? Не поможет. Поставить fail2ban? Скучно. Переименовать root? Вот это хорошая идея!

На профильных площадках можно встретить вопрос о том, как переименовать суперпользователя, и теоретические ответы с предупреждением о потенциальной деструктивности этого действа. В этой статье я расскажу, что может сломаться в теории и на практике.
Читать дальше →
Total votes 86: ↑86 and ↓0 +86
Comments 42

Ностальгическая Action-RPG с фанатским ремастером

Level of difficulty Easy
Reading time 12 min
Views 14K
image

В самом начале нулевых мне посчастливилось сыграть в Nox, удививший меня нетипичной комбинацией геймплейных механик, затягивающим игровым процессом и интересной завязкой! Могу сказать, что это был довольно необычный для своего времени проект, который даже по прошествии десятилетий почти не имеет аналогов. Мне хорошо запомнилось, как в те годы его сравнивали, да и продолжают почему-то это делать в наши дни, с Diablo II, что кажется очень странным. На мой взгляд, игры совершенно непохожие, с разной центральной механикой и геймплейной сутью, с абсолютно различным подходом к развлечению игрока. Но, думаю, это произошло оттого, что проекты вышли почти одновременно (с интервалом менее, чем полгода), и многие ещё неопытные в терминах игроки (да и пресса) очень часто называли их братьями по жанру, во многом из-за изометрического вида и сражений с монстрами с помощью навыков. Вот только сравнение этих двух игр сейчас, спустя десятки лет, не несёт в себе никакого вреда, а тогда такое обсуждение ничего, кроме урона по репутации, создателям Nox не приносило (ну ведь правда, если я хочу диаблоид, зачем мне Nox, когда есть сиквел Diablo?). Из-за этого продавалась игра не так хорошо, как хотелось бы студии и издателю.
Читать дальше →
Total votes 44: ↑43 and ↓1 +42
Comments 29

Спустя 10 лет после запуска Star Citizen до сих пор в альфе. Но полный комплект кораблей уже стоит $48 000

Level of difficulty Easy
Reading time 4 min
Views 10K

Неплохо, правда? И это при том, что некоторые из этих «космических кораблей, бороздящих просторы Вселенной» тоже ещё не готовы, а только находятся в разработке. Что вообще происходит? Много всего. Со Star Citizen вообще всё очень интересно, ведь впервые об этой игре стало известно 11 лет назад, а официального релиза всё ещё нет. Проект находится в статусе альфа‑версии, и когда будет финал — до сих пор непонятно.

Тем не менее, разработчики делают всё, чтобы проект приносил деньги. На сей раз они предложили полный набор кораблей вселенной Star Citizen по цене в $48 000. Называется это предложение Legatus Pack. Подробности под катом.

Читать далее
Total votes 23: ↑21 and ↓2 +19
Comments 25

Grand Theft Auto III – новое измерение в мире гейминга

Level of difficulty Easy
Reading time 6 min
Views 12K


Серия GTA пользовалась популярностью у игроков и критиков начиная с первой части, когда она представляла собой незамысловатый top–down шутер. Но именно переход в третье измерение подарил ей по-настоящему большую славу, дав толчок дальнейшему развитию и породив целую плеяду подражателей. Сегодня мы вспомним, с чего всё начиналось.
Читать дальше →
Total votes 34: ↑32 and ↓2 +30
Comments 32

Sid Meier's Civilization III от Firaxis – история создания

Level of difficulty Easy
Reading time 10 min
Views 10K


Мир готовится вступить в новый век, игровая индустрия потихоньку переключает фокус внимания с приставок на компьютеры, на судебных заседаниях решается будущее Цивилизации… А что же Сид Мейер, её отец? Летит на всех парах к Альфа Центавре, строить прекрасное будущее!

Успех Sid Meier's Civilization II однозначно показал: продолжению быть. Но какому? От Microprose без Мейера или от маэстро Сида и его новой команды? Или от Activision, зашедшей с козырей и выкупившей все права у Avalon Hill – изначального правообладателя названия «Civilization»?
Читать дальше →
Total votes 53: ↑52 and ↓1 +51
Comments 11

Как создавали игру Neverwinter Nights

Reading time 17 min
Views 9.7K

Вы слышали новость с игрового «Оскара»? Игра Baldur's Gate 3 от Larian Studios взяла приз «Главная игра года» на церемонии The Game Awards 2023. Она обошла такие игры, как Alan Wake II, Marvel’s Spider-Man 2, Resident Evil 4, Super Mario Bros. Wonder и The Legend of Zelda: Tears of the Kingdom.

Лично я уже несколько лет ни во что не играл — нет времени из-за треклятой работы. Но когда прочитал про триумф BG3, перед моими глазами вдруг всплыли картины из моего подросткового возраста: как я играл в BG1, BG2. Но настоящей жемчужиной для меня была Neverwinter Nights из той же вселенной Forgotten Realms, на основе тех же правил Dungeons & Dragons (правда, в другой редакции). 

По щеке покатилась скупая мужская слеза, и я решил немного поностальгировать об этом шедевре BioWare. И поделиться с читателями, как создавалась игра и что она принесла в игровую индустрию. Может быть, кто-то тоже испытает приятные забытые чувства, как и я. Тем более на Хабре она как-то незаслуженно обделена вниманием.

Читать далее
Total votes 40: ↑38 and ↓2 +36
Comments 32

Arcanum всё ещё актуальна? Ностальгический рассказ и идеальная сборка для игры в 2024

Level of difficulty Easy
Reading time 16 min
Views 13K
image

Я помню те времена, когда игровые шедевры штамповались один за другим, но многие из них были просто не замечены. Несомненно, это здорово, когда у геймеров есть большой выбор отличных игр на любой вкус, вот только иногда это приводит к тому, что в этом переполненном игровом прудике не всей рыбке хватает кислорода и пропитания, и она начинает умирать. Именно так и произошло со студией Troika Games, выпускавшей отличные, поражающие обилием игровых механик проекты, которые, к сожалению, геймеры распробовали далеко не сразу, но помнят даже спустя десятки лет. Первым из них оказался Arcanum: Of Steamworks and Magick Obscura, который многие называли «Fallout в мире стимпанка». Большой проработанный мир в необычном сеттинге, где магия противопоставляется миру технологий, интересный сюжет и множество путей решения одной и той же задачи! Но, несмотря на всеобщее признание, финансовые достижения были очень скромные, что стало первым ударом по молодой студии…

В сегодняшнем выпуске «Ностальгических игр» я не только вспомню о такой отличной игре, как Arcanum, но и предоставлю её сборку, идеальную для игры в 2024 году, с роликами в высоком разрешении, русификатором, HD-модом, а также исправлением огромного количества багов и проблем с балансом.
Читать дальше →
Total votes 42: ↑41 and ↓1 +40
Comments 22

Поговорим об оптимизирующих компиляторах. Сказ восьмой: размотка циклов

Level of difficulty Medium
Reading time 12 min
Views 8.6K

Есть оптимизации, польза от которых очевидна всегда или почти всегда. Например, не делать лишнюю проверку лучше, чем делать. Не считать два раза одно и то же обычно лучше, чем считать (если только мы не упёрлись в нехватку регистров или имеем другие подобные проблемы на нижнем уровне). Вычислять выражения вне цикла выгоднее, чем в цикле. И так далее.

Но есть оптимизации, применение которых имеет как плюсы, так и минусы. Выиграв в одном месте, мы можем получить отрицательные эффекты в другом. Например, сэкономив на количестве проверок, мы можем раздуть общий объём кода и поломать микрооптимизации. Каноничным примером такой оптимизации, решение вопроса об использовании которой больше похоже на искусство, чем на науку, является размотка циклов (Loop Unrolling), о которой мы сегодня поговорим. В статье я попробую осветить как можно больше (хотя, наверное, и не все) соображения о том, почему эту оптимизацию может быть нужно или не нужно применять.

Смысл размотки цикла заключается в том, чтобы за счёт дублирования тела цикла уменьшить количества его итераций. В зависимости от того, как много мы знаем об исполнении цикла, размотка может быть полной, частичной или динамической.

Читать далее
Total votes 55: ↑55 and ↓0 +55
Comments 6

Information

Rating
1,536-th
Location
Магнитогорск, Челябинская обл., Россия
Registered
Activity