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

Про правильный кокс, ИТ и эксперименты с ним - 1

Наша планета состоит из железа на 34,6 %, но оно в основном спрятано довольно глубоко. Большая часть доступного — в рудах в виде оксидов. При обработке руды происходит два процесса: нагрев (который переводит металл в жидкое агрегатное состояние) и связывание кислорода чем-то с более сильной химической связью, например, углеродом. Для этих целей идеально подходит уголь: он позволяет получить в простой печи нужную температуру и сам по себе во многом состоит из углерода. Сжигая оксиды железа внутри кучи угля, мы можем выплавлять металл чуть ли не в ямах в земле.

Увы, но для промышленного применения просто уголь не подходит. Ямы в земле обладают очень низким КПД. Для того чтобы повысить КПД, нужно увеличивать геометрический размер печи, а при увеличении её размера растёт высота столба топлива-восстановителя. В современных доменных печах у нас она может достигать 18 метров. А это очень толстый слой, но если этот слой не будет газопроницаем, то нарушатся конвекционные процессы, позволяющие происходить нагреву и восстановлению железа. И нарушится ещё несколько процессов, в частности, не будет правильного горения из-за отсутствия отвода газов.

Важна способность топлива восстанавливать CO2. Если она станет высокой, то углерод будет восстанавливать не металл, а превращать перегоревшую CO2 в CO, что резко ухудшит процесс выплавки. Кокс помогает и горению и восстановлению. Он делается нагревом смеси углей при 1000+ °C без доступа кислорода, когда смесь сначала переходит в пластическое состояние, а потом частицы начинают спекаться между собой.

Проблема только в том, что кокс исторически готовился на основании экспертного мнения технологов (основанного на опыте и не всегда системного с точки зрения математики). Примерная формула есть, а точная — только в голове у технолога с 40-летним стажем в виде интуитивного понимания.

Мы придумали способ, как соединить экспертное знание с математикой.
Читать полностью »

Как я уже писал ранее, на FPS в Flame в основном влияют операции, производимые на CPU. Если в вашей игре достаточно много взаимодействующих объектов, то одной из самых дорогих операций будет определение столкновений. Настолько дорогой, что на экране performance-метрики она закроет собой любые другие неоптимизированные участки.

Сами авторы Flame отлично осознают, что их алгоритм – не идеальный, а просто «дающий достаточную производительность». Достаточна она, видимо, для случаев, когда у вас всего объектов 10, не более. Если же у вас что-то более сложное – тогда приятного чтения!

Проблемы алгоритма Flame

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

После написания первой статьи про FizzBuzz (которая неожиданно для меня стала выбором редакции на Технотексте 2021) у меня появлялись мысли о том, что можно бы еще ускорить, но все время было не до того. И тут мне прилетает перчатка.

Продолжаем разгонять FizzBuzz - 1

Так что пришлось расчехлить верный GCC, чтобы помериться кодом с @ChePeter.

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

Немного о «мертвом коде» - 1

А вдоль дороги мертвые с косами стоят

Термин «мертвый код» - это, скорее, жаргонное, чем научное название участков программы, на которые не может попасть управление и, таким образом, они никогда не выполняются. Разумеется, в нормальных программах таких участков быть не должно. Но поскольку языки программирования становятся все сложнее и сложнее (а программисты все тупее и тупее, шутка!Читать полностью »

В этом посте будет проанализировано, как каналы Unix реализуются в Linux. Для этого мы напишем и в несколько итераций оптимизируем тестовую программу, которая записывает и считывает данные через канал1.

Сноска 1

Стилистически эта работа будет напоминать исследование производительности на примере atan2fЧитать полностью »

Прим. перев.: автор данного исследования — Marc Richards, Solutions Architect и DevOps-инженер — продемонстрировал потрясающую настойчивость и тщательность в тотальной оптимизации производительности веб-приложения. Получившийся материал — кладезь полезных знаний для расширения своего кругозора в области оптимизации, особенностей сетевого стека в Linux и не только, даже вне зависимости от практической заинтересованности в конечном результате автора. Приготовьтесь к по-настоящему длинному техническому путешествию с обилием терминологии, увлекательных графиков и полезных ссылок.

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

Оптимизация инфраструктуры: снижаем счет за ресурсы без ущерба для бизнеса - 1

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

Профилирование — это неотъемлемая часть любых работ по оптимизации кода или производительности программ. Любой опыт, любые знания в сфере оптимизации производительности, которые уже у вас есть, не принесут особой пользы в том случае, если вы не знаете о том, где их применить. В результате оказывается, что поиск узких мест приложений может помочь в деле решения проблем производительности, поможет сделать это быстро и приложив не слишком много усилий.

Читать полностью »
История: пишем скрипты на Go - 1

Это история о том, как я попытался писать скрипты на языке Go. Здесь мы обсудим, когда вам может понадобиться скрипт на Go, какого поведения от него следует ожидать, а также рассмотрим его возможные реализации. В этой дискуссии мы глубоко обсудим скрипты, оболочку и шебанг-строки . Наконец, обсудим решения, обеспечивающие работоспособность скриптов на Go.

Почему Go хорош для скриптинга?

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

Прим. Wunder Fund: мы занимаемся высокочастотной торговлей и это заставляет нас часто думать об оптимизации кода, но в основном, конечно, плюсового. В этой короткой статье описаны несколько подходов к оптимизации Python-программ по памяти. И хотя много проблем можно решить, просто докупив ещё памяти, но не все.

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


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