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

С самого начала работы над одним из web-проектов мы стремились к высокому уровню покрытия кода тестами, и на начальном этапе разработки я не задумывался об оптимизациях скорости их выполнения. Как результат, с ростом проекта, всё большим покрытием его тестами и ростом команды время выполнения тестов выросло с нескольких секунд до десятков минут. А наличие быстрых тестов может быть также важно как и производительность всего приложения.

Как я с этим боролся и что получилось в итоге?

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

image
Сложно найти человека, не знакомого с игрой "Жизнь", придуманной английским математиком Джоном Конвеем еще в 1970 году, и до сих пор не теряющей своей популярности. Многие программисты писали свою реализацию этой игры, и еще одна вряд ли кого-то удивит. Однако эта игра является отличным примером, показывающим, насколько полезной может оказаться оптимизация вычислений, даже не меняющая асимтотическую сложность алгоритма. Мы начнем с простейшей реализации на c# и будем последовательно применять различные оптимизации, ускоряя работу программы.
Мы также улучшим алгоритм на Javascript, ускорив его в 10 раз по сравнению с наивной реализацией.
В конце статьи дана ссылка на код, а также на online-реализацию игры с оптимизированным алгоритмом на JavaScript, выполняющим до двухсот итераций в секунду на поле размера 1920x1080 (Full HD), где вы можете убить время поиграть в эту замечательную игру.
Читать полностью »

Что такое CDN, и как это вообще работает - 1


Сайт Texas Internet Consulting. Жив с 1987 года, страница — 7 Килобайт.

Помните время, когда главная больше 90 Килобайт считалась расточительством? С тех пор Интернет стал жирным. И понадобились инструменты, чтобы правильно раздавать трафик сразу с нескольких узлов. Например, во время очередного обновления Fortnite CDN от Akamai сумел переварить трафик мощностью в 106 Терабит в секунду. Давайте пробежимся по основным принципам этой технологии и потенциальным проблемам.

И о том, почему Minecraft в Казани тормозит, если не развернуть сервер в черте города.
Читать полностью »

image

Самый известный алгоритм для нахождения всех простых чисел, не больших заданного, – решето Эратосфена. Он замечательно работает для чисел до миллиардов, может быть, до десятков миллиардов, если аккуратно написан. Однако каждый, кто любит развлекаться с простыми числами, знает, что их всегда хочется иметь под рукой как можно больше. Как-то раз мне для решения одной задачи на хакерранке понадобилась in-memory база данных простых чисел до ста миллиардов. При максимальной оптимизации по памяти, если в решете Эратосфена представлять нечетные числа битовым массивом, его размер будет около 6 гигабайт, что в память моего ноутбука не влезало. Существует модификация алгоритма, гораздо менее требовательная по памяти (делящая исходный диапазон чисел на несколько кусков и обрабатывающая по одному куску за раз) – сегментированное решето Эратосфена, но она сложнее в реализации, и результат целиком в память все равно не влезет. Ниже предлагаю вашему вниманию алгоритм почти такой же простой, как и решето Эратосфена, но дающий двукратную оптимизацию по памяти (то есть, база данных простых чисел до ста миллиардов будет занимать около 3 гигабайт, что уже должно влезать в память стандартного ноутбука).
Читать полностью »

Делаем поддержку дешевле, стараясь не растерять качество - 1

Аварийный режим (также упоминается как IPKVM), позволяющий подключаться к VPS без RDP прямо с уровня гипервизора, экономит 15–20 минут в неделю.

Первое и главное — не бесить людей. Во всём мире поддержка разделена на линии, и сотрудник первой должен попробовать типичные способы решения. Если задача выбивается за их пределы — передать второй линии. Так вот, среди администраторов VDS достаточно часто попадаются люди, которые умеют думать. В отличие от многих других поддержек. Ну, по крайней мере, существенно чаще. И они хорошо структурируют тикет, сразу описывая всё что нужно. Если у первой линии «глаз замылится» и они случайно в ответ на такое попросят включить и выключить — это фиаско.

Задача стоит очень простая: сделать поддержку нашего VDS-хостинга адекватной при минимуме затрат. Потому что мы фастфуд мира хостинг-провайдеров: никакого особого «облизывания», низкие цены, нормальное качество. Ранее уже был рассказ про то, что с появлением инстаграм-няшек, пытающихся автоматизировать ведение аккаунта и владельцев малого бизнеса с удалённой бухгалтерией и остальных не слишком прокачанных в технологиях людей, общение «как админ с админом» прокатывать перестало. Пришлось менять язык общения.

Теперь расскажу о процессах чуть больше — и о неминуемых косяках с ними.
Читать полностью »

В статьях моих коллег про беспилотные трамваи и тепловозы были упомянуты радары. Они широко применяются в автомобильной отрасли для реализации стандартных функций активной и пассивной безопасности. Решения для высокоавтоматизированных систем управления (включая беспилотный транспорт) требуют более гибких и продвинутых технологий. В Cognitive Pilot радарами занимается специальное подразделение, которое до конца 2019 года работало как Design House, выпуская по контрактной модели решения для автопроизводителей и поставщиков компонентов. Сейчас мы переходим на новую бизнес-модель и готовим к серийному производству линейку радаров для широкого круга заказчиков — от проектов DIY до стартапов и опытных парков. На базе использующихся в проектах Cognitive Pilot решений будут созданы готовые продукты для пользователей, которые можно условно разделить на 3 категории: «MiniRadar», «Industrial» и «Imaging 4D». Подобные устройства активно применяются в самых разных отраслях, поэтому стоит рассказать о них подробнее.

О революции в радарах, дедлайнах и выходе в четвертое измерение - 1
Читать полностью »

Аннотация, или о досуге молодых ученых

Последние несколько недель мы с коллегами заканчиваем рабочий день тем, что соревнуемся в точности прогноза развития эпидемии COVID-19 в России, используя различные методы нелинейной регрессии. И если прогноз на завтрашний день неизбежно оказывается хорош, то предсказание на срок больше одной недели отражает реальность лишь в общих чертах. Казалось бы, все понятно: есть эпидемиологические модели, есть методы оптимизации, есть достаточно подробные данные, — достаточно совместить это воедино и получить точный прогноз на месяц, а то и полгода, вперед. В этой статье я поделюсь своими соображениями, что не так с классической моделью SEIRD и как это исправить. И, конечно, приоткрою завесу тайны, окутывающую наше с вами будущее.

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

Пандемия COVID-19 глазами математика, или почему классическая модель SEIRD не работает - 1
На рисунке выше приведено общее число подтвержденных случаев COVID-19 в логарифмическом масштабе для России и трех европейских стран, входящих в топ-5 по числу зараженных. Объяснение далее в тексте.
Читать полностью »

image
Один из ранних прототипов, использовавшихся для тестов.

Сразу скажу: крутейший он потому, что единственный из доведённых до опытной эксплуатации автопилотов третьего уровня. А единственный доведённый до опытной эксплуатации он потому, что без наработок по автопилотированию трамваев и чего-то ещё в этот рынок соваться просто нет смысла. Тепловозов довольно много, задача интересная и важная для производств, но не окупается как отдельная. Мы знаем про наработки на эту тему у НИИАС и Siemens, но не знаем, чтобы их трамваи где-то ездили в городской среде, а локомотивы перевозили реальные грузы.

Поскольку у нас уже достаточно много различных наработок и решений с беспилотными трамваями в России и Китае, мы решили провести эксперименты с одним крупным предприятием с большим парком маневровых тепловозов, используемых для доставки сырья к цехам.

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

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

Боремся с пробками в маленьком городе за небольшой бюджет: результаты 6 месяцев проекта - 1

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

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

Но мы пошли чуть дальше: в городе Новомосковске (120 тысяч жителей) поставили на светофоры камеры, поменяли все контроллеры и связали всё это в одну сеть. Бюджет у города небольшой, поэтому правила пока эвристические без всякого космоса вроде data mining и машинного обучения, светофорных объектов не очень много (потому что даже поставить 21 камеру уже дорого), но мы смогли добиться вполне конкретных результатов.

Скорость прохождения перекрёстков с нашими «умными светофорами» и обычных перекрёстков рядом увеличилась. Мы научились приоритизировать поток машин утром на крупный завод, считать и обрабатывать транзитные фуры и даже замахнулись на ГЛОНАСС-датчики «скорой», чтобы убирать возможные заторы перед ними. Читать полностью »

Привет!

В общем, есть экспериментальный трамвай, который в рамках испытаний иногда ходил по одному из маршрутов. Автопилот тестируется на закрытой территории, а в городских — активный помощник водителя вагоновожатого. Водитель трамвая едет с руками на управлении, но тестируется именно автономный автопилот. Трамвай визуально не отличается от обычного, потому что мы вместе с производителем запихали приборные блоки далеко под панели и вывели интерфейсы на стандартные экраны. Единственное — у него можно заметить несколько камер под лобовым стеклом, спрятанный под обшивку радар и GPS-датчик на крыше. Да, ещё иногда для целей отладки мы привешиваем лидар.

image

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

Вообще трамвай — это идеальная «песочница» для полного автопилота автомобиля. Мы уже сейчас его реализовали. Наши читы:

  • Мы знаем маршрут и имеем гарантию, что наше ТС никуда с него не денется.
  • Можно проехать заранее и разметить точки со светофорами и прочим, чтобы системе было легче их распознавать.
  • Трамвай не может перестроиться из полосы в полосу. Большая часть нагрузки автопилота авто завязана на «куда сейчас отрулить» и тысячи сценариев, а у нас отрулить некуда.
  • Тормозит он почти мгновенно и немного резко, то есть прогнозы движения других автосредств на дороге менее сложные.

С чем реально есть проблемы — это с людьми на остановках, которые стараются пролезть первыми, рискуя жизнью. Читать полностью »


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