Вначале была эта статья. Потом к ней появился комментарий. А в результате я углубился в чтение матчасти, закопался в дебаг и смог оптимизировать код из первой части этой истории. Предлагаю вместе со мной пройтись по основным моментам.Читать полностью »
Рубрика «оптимизация» - 12
Python v3.x: как увеличить скорость декоратора без регистрации и смс
2019-11-02 в 11:33, admin, рубрики: idewave-core, python, python3, оптимизацияНам нужен другой Битрикс
2019-10-28 в 10:51, admin, рубрики: 1С-Битрикс, битрикс, интерфейсы, оптимизация, юзабилитиКак быстро определить, что на отдельно взятый сайт забили, и им никто не занимается? Если в подвале главной страницы в копирайте стоит не текущий год, а старый, то именно в этом году опека над сайтом скоропостижно оборвалась. Так и на странице входа в актуальную админку Битрикса на конец 2019-го года стоит 2016 год.
Читать полностью »
Программист-защитник сильнее энтропии
2019-10-28 в 8:12, admin, рубрики: best practices, fallback, post mortem, безопасность, Блог компании FunCorp, валидация, высокая производительность, кеширование, надежность, оптимизация, прагматизм, практики, практики программирования, Программирование, Проектирование и рефакторинг, процесс разработки, процессы, Разделение привилегий, разделяй и властвуй, разработка, Совершенный код, стабильность© Dragon Ball. Goku.
Программист-защитник в любой момент и в любом месте кода ожидает появления потенциальных проблем и пишет код таким образом, чтобы заранее от них защититься. А если от проблемы нельзя защититься, то хотя бы сделать так, чтобы её последствия и влияние на пользователей были минимальными.
Вспоминается эффект FlashForward из голливудских блокбастеров, когда главный герой видит грядущую катастрофу и остаётся предельно спокойным, потому что заранее знает, что она произойдёт, и имеет от неё защиту. Идея защитного программирования в том, чтобы защититься от проблем, которые сложно или вовсе невозможно предвидеть. Программист-защитник ожидает появления ошибок в любом месте системы и в любой момент времени, чтобы предотвратить их до того, как они нанесут ущерб. При этом цель не в том, чтобы создать систему, которая никогда не падает, это всё равно невозможно. Цель в том, чтобы создать систему, которая падает изящно в случае любой непредвиденной проблемы.
Давайте разберёмся подробнее, что входит в понятие «падать изящно».
- Падать быстро. В случае непредвиденной ошибки все операции должны завершаться сразу же, особенно если последующие вычисления тяжёлые или могут привести к порче данных.
- Падать аккуратно. Если возникла ошибка, программа должна освободить все ресурсы, снять локи, удалить временные и наполовину записанные файлы, закрыть соединения. Дождаться завершения критических операций, прерывание которых может привести к непредсказуемым результатам. Либо безопасным способом аварийно завершить эти операции.
- Падать явно и красиво. Если что-то сломалось, сообщение об ошибке должно быть простым, лаконичным и содержать важные детали из того контекста системы, где возникла ошибка. Это поможет команде, которая отвечает за систему, максимально быстро разобраться в проблеме и исправить её.
Принцип увеличения гибкости характеристик современных автомобильных ДВС
2019-10-26 в 4:33, admin, рубрики: автомобильный, гибкость, двигатель, двс, КПД, Научно-популярное, оптимизация, Основа, современный, транспорт
Насколько важно иметь совершенный код в программе для ее быстрой и качественной работы? Настолько же важно для ДВС тратить меньше энергии там, где этих затрат можно избежать.
Прошлая статья из-за упрощений вызвала вопросы критического характера у части хабра-людей. В этой я попробую ответить на них подробнее как и обещал, а так же раскрыть один из основных принципов ДВС последних десятилетий упомянутый в статье «Эволюция развития автомобильных двигателей с начала 90-х годов.»
Чем ИТ может сильно помочь колхозу «Путь коммунизма» или агрохолдингу
2019-10-14 в 12:12, admin, рубрики: автоматизация, агрохолдинг, Анализ и проектирование систем, Блог компании SAS, данные, кластеризация, колхоз, оптимизация, планирование, потребитель, Программирование, рынок, севооборот, сельское хозяйство, техника, управление проектами, урожай
Было-стало после кластеризации и оптимизации культур
Колхозы и агрохолдинги в России почти не автоматизированы. А там на почти ровном месте с минимальными затратами можно получить до 10 % прироста доходности за счёт выбора оптимального портфеля выращиваемых культур, точного распределения техники по работам и вообще нормального планирования. Мы пришли на несколько объектов и провели расчёты для них, о чём сейчас я и расскажу.
Сформулировали три фундаментальных вопроса:
- В каких пропорциях что нужно вырастить и где, чтобы больше заработать?
- Когда какая техника и где будет работать?
- Что должно быть в парке техники, чтобы не возникало рисков срывов сроков проведения агроопераций или больших затрат на найм?
Мы решали все эти задачи, и там море интересных особенностей. Обсуждать мы будем абстрактный колхоз «Путь коммунизма», расположенный в случайном месте (нам просто понравились поля на спутниковой карте), потому что настоящих заказчиков я называть пока не могу.
В таких местах, конечно, действуют рациональные агенты. Но иногда встречается пьющий агроном, иногда попадается косячник-механизатор и другие узнаваемые персонажи из реальной жизни. Нас ждут град, сломанный комбайн и другие приключения. И вот мы пойдём в это всё со своей автоматизацией. Читать полностью »
Примеры дичи из заказов «приходите спасать» (разбор десятка инцидентов с примерами)
2019-09-24 в 7:02, admin, рубрики: анализ, Блог компании КРОК, код, консалтинг, оптимизация, пользователь, приложение, производительность, разработка, управление проектамиИногда бывает так:
— Приезжайте, у нас упало. Если сейчас не поднять — покажут по телевизору.
И мы едем. Ночью. На другой край страны.
Ситуация, когда не повезло: на графике показан резкий рост нагрузки на СУБД. Очень часто это первое, на что смотрят администраторы системы и это первый признак того, что наступила жопа
Но чаще речь идёт про какие-то типовые вещи. Например, заказчик столкнулся с низкой производительностью системы документооборота. По понедельникам и вторникам система падала, они перезагружали сервер, и потом всё поднималось. Захлёбывалась база данных. Хотели докупить оборудования (что долго и дорого), позвали нас просчитать смету. Мы им посчитали смету и заодно предложили разобраться, что же именно тормозит. За три-четыре часа локализовали источник проблемы. Выяснили, что это медленные запросы в базу данных и неоптимальные схемы индексирования. Создали недостающие индексы, поковырялись с оптимизатором запросов в Оракле, некоторые проблемы потребовали изменения кода — поменяли условия поиска (без изменения функциональности), заменили часть запросов на использование предрассчитанных представлений. Если бы у них был нормальный человек по БД — могли бы сделать то же и сами. Но вместо нормального человека был аудит базы данных раз в полгода крутыми ораклистами — они выдавали общие рекомендации по настройкам и железу.Читать полностью »
Виды компиляции в JVM: сеанс черной магии с разоблачением
2019-09-06 в 17:19, admin, рубрики: AOT, java, jit, jvm, Блог компании Издательский дом «Питер», высокая производительность, Компиляторы, оптимизация, ПрограммированиеВсем привет!
Сегодня вашему вниманию предлагается перевод статьи, в котором на примерах разобраны варианты компиляции в JVM. Особое внимание уделено AOT-компиляции, поддерживаемой в Java 9 и выше.
Приятного чтения!
Читать полностью »
Почему const не ускоряет код на С-C++?
2019-08-23 в 10:28, admin, рубрики: C, c++, Анализ и проектирование систем, Блог компании Mail.Ru Group, высокая производительность, никто не читает теги, оптимизация
Несколько месяцев назад я упомянул в одном посте, что это миф, будто бы const помогает включать оптимизации компилятора в C и C++. Я решил, что нужно объяснить это утверждение, особенно потому, что раньше я сам верил в этот миф. Начну с теории и искусственных примеров, а затем перейду к экспериментам и бенчмаркам на реальной кодовой базе — SQLite.
Читать полностью »
Автоверстка и стили в Unity: наш новый пайплайн и инструменты для UI
2019-08-08 в 13:46, admin, рубрики: UI, автоматизация, Блог компании Pixonic, геймдев, интерфейс, интерфейсы, оптимизация, разработка игр, разработка мобильных приложений, рутина
Начну с главного: мы сделали удобный инструмент для верстки и изменили пайплайн работы. Теперь по порядку.
В мобильных играх много разных интерфейсов, включая HUD и огромное количество экранов для меты. UX-дизайнеры их проектируют, UI-дизайнеры отрисовывают, а чтобы всё это оказалось в движке существуют специально обученные люди — технические UI-дизайнеры. Ну или по-простому верстальщики. Частично их работа заключается в том, чтобы кропотливо из PSD-макета перенести все в префаб, чиселку за чиселкой. Еще они занимаются UI-анимациями, заливают спрайты, делают верстку адаптивной, расставляют ключи локализаций и так далее.
И мы поставили себе несколько целей:
- ускорить работу верстальщика и избавить его от рутины;
- оптимизировать взаимодействие между отделами UI-дизайна и разработки;
- внести в UI единообразие: создать гайдлайны и сформировать на их основе Unity-ассеты;
- обеспечить расширяемость и универсальность UI, реюзабельность ассетов, устойчивость к правкам, и легкую оптимизацию.
Вот как это происходило. Читать полностью »
Уместить звездное небо на WebGL в 1009 байт JavaScript
2019-08-01 в 11:41, admin, рубрики: javascript, js1k, WebGL, оптимизация, Спортивное программирование, фракталыДве вещи наполняют душу всегда новым и все более сильным удивлением и благоговением, чем чаще и продолжительнее мы размышляем о них, — это звездное небо надо мной и моральный закон во мне. Иммануил Кант
JS1k — ежегодное соревнование, где надо вместить демо, игру или все что угодно, в 1024 символа на JavaScript. В этом году мое демо заняло четвертое место (до третьего не хватило каких-то два балла). Посмотреть демо можно на сайте JS1k. У кого не открывается или не работает, выглядеть должно так:
Минифицированный и полный исходный код лежит на github. А под катом разбор того, как сейчас минифицируют JavaScript для таких конкурсов.