Рубрика «оптимизация» - 4

В ноябре 2022 года мы задали себе задачку: можно ли запрограммировать анимацию, воспроизводимую в режиме реального времени, как обычный короткий мультик, но с условием, что файл должен быть не больше 8 килобайт. При этом цель считалась бы достигнутой, если бы у нас получилась нормальная графика, анимация, режиссёрская и операторская работа, а ещё подходящая музыка. Да, 8 килобайт — на секундочку, в два с лишним раза меньше этого поста. Мы не представляли, насколько это вообще возможно, так что оставалось только попробовать.

В апреле 2023 года, спустя несколько месяцев работы, мы, наконец, выкатили ленту Читать полностью »

Обычно оцинковку представляют так: берём металл, макаем в цинк, вынимаем — и готово. На самом же деле цинк к стали вообще-то не приваривается, не приклеивается и не соединяется с ней достаточно прочно каким-то другим способом.

Химия процесса чуть сложнее: вам нужен алюминий, который станет мостиком между сталью и цинком.

image

Алюминия в расплаве меньше 1%, но его точная доля очень сильно влияет на то, как будет ложиться покрытие. Недостаток алюминия приведёт к плохой адгезии расплава и непроцинковке полосы. Чуть больше — тоже плохо: излишек будет в расплаве. Только при попадании в норму покрытие получается прочным, пластичным и блестящим. Кроме того, нестабильность концентрации алюминия может вызвать неэффективное использование цинка, которое ведёт к увеличению операционных расходов, а также к образованию дросса, представляющего собой соединение цветных металлов с железом.

У нас на производстве — четыре агрегата горячего цинкования. Берём рулон, запускаем его в агрегат, он там проходит через ванну. В начале агрегата к концу рулона привариваем другой рулон, и через ванну в итоге всегда идёт полоса металла, которая покрывается цинком. В ванне стоят индукторы, которые держат температуру между 450 и 470 градусами Цельсия.

Получается томящийся цинково-алюминиевый «суп», в который рабочие цеха могут добавлять «куриные кубики» в виде новых цинк-алюминиевых слитков по мере обеднения расплава. Читать полностью »

Оптимизируя неоптимизируемое: ускорение компиляции C++ - 1


В этой статье речь пойдёт о повышении скорости компиляции библиотеки {fmt} до уровня библиотеки ввода-вывода Cи stdio.

Дня начала немного теории. {fmt} – это популярная открытая библиотека С++, представляющая более эффективную альтернативу С++ библиотеке iostreams и библиотеке Си stdio. Последнюю она обошла по целому ряду аспектов:

  • Безопасность типов с проверками форматирующих строк во время компиляции. Эти проверки включены по умолчанию начиная с С++ 20, и присутствуют в качестве дополнения для С++ 14/17. Форматирующие строки среды выполнения в {fmt} также оказываются безопасными, чего невозможно достичь в printf.
  • Расширяемость. Определяемый пользователем тип можно сделать форматируемым. При этом большинство типов стандартных библиотек, например, контейнеры и пакеты для обработки даты и времени, предлагают возможность форматирования изначально.
  • Производительность. {fmt} намного быстрее любой распространённой реализации printf, порой на несколько порядков (например, в форматировании чисел с плавающей запятой).
  • Возможность переноса поддержки Unicode.

Тем не менее одной из областей, в которой stdio по-прежнему опережала {fmt}, являлось время компиляции.Читать полностью »

Внутреннее представление и оптимизации строк в JavaScript-движке V8: «отмываем» строки, «обгоняем» C++ - 1


С самого рождения JavaScript в каком-то смысле был языком для манипулирования текстом — от веб-страничек в самом начале до полноценных компиляторов сейчас. Неудивительно, что в современных JS-движках достаточно много сил уделено оптимизации внутреннего представления строк и операций над ними.

В этой статье я хочу рассмотреть, как могут быть представлены строки в движке V8. Попытаюсь продемонстрировать их эффект, обогнав C++ в очень честном бенчмарке. А также покажу, в каких случаях они могут, наоборот, привести к проблемам с производительностью, и что в таких случаях можно сделать.Читать полностью »

Нам иногда присылают истории про работу в IT. Про разное. Про начальство, про коллег, про обстоятельства. Сегодня хотим поделиться с вами одной из таких историй. Далее текст от её автора.

Короче, в Австралии есть цифровая медицина. Сделана она руками русских разработчиков.

Давным-давно к нам пришли австралийцы, мол, давайте. Русские дали. Но мы же люди злые: то от австралийских менеджеров потребуем работать, то денег захотим, то начальству перечить начнём.

Читать полностью »

Ускоряйте принятие решений - 1

Многие компании уверены, что эффективны в принятии решений, хотя на самом деле лишь имитируют прогресс в этой области. Определенные действия создают видимость движения вперед, но в конечном итоге ничему не способствуют.

Читать полностью »

image

Сегодня окунёмся в мир, который можно потрогать. В этой статье мы исследуем, как с нуля, быстро и без особо сложной математики написать движок для игры от первого лица. Для этого мы воспользуемся приёмом под названием «бросание лучей» (raycasting). Возможно, вы видели примеры такой техники в играх Daggerfall и Duke Nukem 3D, а из более свежего – в статьях из «ludum dare» от Нотча Перссона. Что ж, для Нотча это неплохо, но не для меня! Вот демка (управление стрелками и тачпадом) [источник].Читать полностью »

Разработчики — налево, методологи — направо: четыре шага к оптимизации работы BI-аналитиков - 1

Привет! Меня зовут Наташа Базанова, я старший аналитик Selectel. В компании я работаю три года: за это время команда аналитиков сильно расширилась, число задач и их амбициозность выросли. Как и любая другая команда, мы столкнулись с проблемами, связанными с несовершенством бизнес-процессов.

В этом тексте расскажу, что мы предприняли, чтобы работать эффективнее и слаженнее. Спойлер: для этого нам пришлось разделиться на две команды, но это тот случай, когда расставание пошло на пользу. Надеюсь, кому-то наш опыт и рекомендации пойдут на пользу — сэкономят время, деньги и нервы. А если вы проходили подобный путь, делитесь своей историей в комментариях!
Читать полностью »

Хочу поделиться своей историей расследования одной довольно необычной компиляторной оптимизации. Необычна она в том плане, что для нее производятся довольно нетривиальные математические вычисления. Приступим!

Чем я пользовался

Есть такой замечательный сайт: Compiler ExplorerЧитать полностью »


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js