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

tl;dr За последние десятилетия мода на собеседования программистов менялась несколько раз, и каждая из них выглядит нелепо в ретроспективе. Либо мы наконец-то нашли настоящий секрет эффективных собеседований, либо увлеклись очередным модным течением, которое через десять-двадцать лет покажется столь же нелепым.

Когда я спрашиваю людей в модных больших технологических компаниях, почему на собеседовании так обязательно спрашивать об алгоритмах, самый распространённый ответ — что-то вроде: «У нас такой масштаб, мы не можем позволить, чтобы кто-то случайно написал функцию O(n^2) и повалил всю систему»1. Что особенно забавно, в последнее время я немало применял на практике эти алгоритмы и решал реальные проблемы, но не могу пройти собеседования, где о них спрашивают! Думаете, я проваливаю половину собеседований или что-то в этом роде? Нет, больше половины. Я участвовал примерно в 40 «настоящих» собеседованиях и прошёл, может, одно или два. Или ни одного2.

Когда я написал черновик этой статьи, друзья посчитали его занудным, потому что я провалил слишком много собеседований. Они говорят, нужно свести все неудачи в таблицу, потому что никто не станет читать десять страниц текста с длинным перечнем неудач. Хороший совет. Уже работаю над таблицей.
Читать полностью »

image

Как быть, если дерево поиска разрослось на всю оперативку и вот-вот подопрет корнями соседние стойки в серверной? Что делать с инвертированным индексом, жадным до ресурсов? Завязывать ли с разработкой под Android, если пользователю прилетает «Память телефона заполнена», а приложение едва на половине загрузки важного контейнера?

В целом, можно ли сжать структуру данных, чтобы она занимала заметно меньше места, но не теряла присущих ей достоинств? Чтобы доступ к хэш-таблице оставался быстрым, а сбалансированное дерево сохраняло свои свойства. Да, можно! Для этого и появилось направление информатики «Succinct data structures», исследующее компактное представление структур данных. Оно развивается с конца 80-х годов и прямо сейчас переживает расцвет в лучах славы big data и highload.

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

imageФото: Carissa/Flickr

Mozilla провела массовое сокращение сотрудников с целью оптимизации средств. Компанию покинут 70 человек из чуть более чем 1000 сотрудников, работающих по всему миру. Освободившиеся деньги хотят направить на приоритетные цели, в том числе защиту приватности и борьбу с трекингом пользователей.

Не исключено, что компанию ждут новые сокращения: пока нет решения об оптимизации штата в Великобритании и Франции. Читать полностью »

image

«Завтра 20-е число, а значит снова будет шторм. Остановить его невозможно, только подготовиться и надеяться, что в этот раз пронесет, случится чудо, и наш озерный паром покорит океан». Такие мысли одолевали команду, занимающуюся поддержкой портала муниципальных услуг еще несколько лет назад. Как мы попали в эту ситуацию и как мы из нее нашли выход будет рассказано ниже.
Читать полностью »

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

Моделирование работы реальной ТЭЦ для оптимизации режимов: пар и математика - 1

Есть большая ТЭЦ. Работает как обычно: жжёт газ, вырабатывает тепло для отопления домов и электричество для общей сети. Первая задача — отопление. Вторая — продать всё выработанное электричество на оптовом рынке. Иногда ещё в мороз при ясном небе появляется снег, но это побочный эффект работы градирен.

Средняя ТЭЦ состоит из пары десятков турбин и котлов. Если точно известны необходимые объёмы выработки электроэнергии и тепла, то задача сводится к минимизации затрат на топливо. В этом случае расчёт сводится к выбору состава и процента загрузки турбин и котлов для достижения максимально высокого КПД работы оборудования. КПД турбин и котлов сильно зависит от типа оборудования, времени работы без ремонта, режима работы и много чего ещё. Есть и другая задача, когда при известных ценах на электричество и объёмах тепла нужно решить, сколько выработать и продать электроэнергии для того, чтобы получить максимальную прибыль от работы на оптовом рынке. Тогда фактор оптимизации — прибыль и КПД оборудования — имеет гораздо меньшее значение. Результатом может быть режим, когда оборудование работает абсолютно неэффективно, но весь выработанный объём электроэнергии можно продать с максимальной маржой.

В теории всё это давно понятно и красиво звучит. Проблема — как это сделать на практике. Мы начали имитационное моделирование работы каждой единицы оборудования и всей станции в целом. Пришли на ТЭЦ и начали собирать параметры всех узлов, замеряя их реальные характеристики и оценивая работу в разных режимах. На их основе мы создавали точные модели для имитации работы каждой единицы оборудования и использовали их для оптимизационных расчётов. Забегая вперёд, скажу, что мы выиграли порядка 4 % реальной эффективности просто за счёт математики.Читать полностью »

Сегодня мы будем измерять производительность разных реализаций функции toupper, ведь именно этим и занимаются по вторникам.

Вообще-то мне нет никакого дела до функции toupper, просто я недавно писал другой пост и мне нужен был какой-то общий сюжетный стержень, а toupper кажется вполне интересным и безобидным кандидатом в бенчмарки. Я старался выбрать что-то максимально простое, что не увело бы меня в сторону, но так уж получилось, что в этом тесте я столкнулся со странной проблемой.
Читать полностью »

Если данные не помещаются в память. Простейшие методы - 1

Самка трубкозуба с детёнышем. Фото: Scotto Bear, CC BY-SA 2.0

Вы пишете программу для обработки данных, она отлично проходит тест на небольшом файле, но падает на реальной нагрузке.

Проблема в нехватке памяти. Если у вас 16 гигабайт ОЗУ, вы не сможете туда загрузить стогигабайтный файл. В какой-то момент у ОС закончится память, она не сможет выделить новую, и программа вылетит.

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

Усилия ведущих разработчиков и производителей оборудования для животноводства сегодня направлены на то, чтобы максимально автоматизировать все процессы ухода за животными, в том числе — процессы приготовления и раздачи кормов. О том, как эта тенденция меняет отрасль, в чем проявляется ее позитивное и негативное влияние, а также о том, какие потенциальные возможности и риски несут новые технологии, пойдет речь в этой статье.

Современное животноводство — очень специфический бизнес. Главная его особенность заключается в том, что он связан с непрерывными биологическими циклами животных. Цена любой ошибки здесь чрезвычайно высока.
Читать полностью »

Как работает оптимизирующий компилятор - 1

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

В этой статье мы рассмотрим некоторые из основных методик приведения (inference techniques) в оптимизирующих компиляторах: как спроектировать программу, с которой компилятору будет легко работать; какие приведения можно сделать в вашей программе и как использовать их для её уменьшения и ускорения.
Читать полностью »


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