Метка «оптимизация» - 3

image
Почему запрос выполняется так долго? Почему не используются индексы?
Наверное, все слышали об EXPLAIN в PostgreSQL. Но не так много тех, кто понимает, как его использовать. Сам длительное время не мог найти доступного для понимания учебника (плохо искал?).
Надеюсь, эта статья поможет желающим разобраться с этим замечательным инструментом.
Читать полностью »

Прочитав свежую статью о Youtube Center, я решил поделиться с читателим своим способом укрощения разжиревшего интерфейса Youtube.

image

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

Задачки с Project Euler хороши тем, что позволяют развлечься и потренировать мозг на разных уровнях сложности для одной и той же задачи. Самый простенький подход — brute force. Первые два десятка задач на 99% решаются именно таким подходом. После отправки правильного ответа на задачу открывается ветка форума по ней. Любители из десятков стран соревнуются, кто процитирует решение поизощреннее. Более продвинутые используют встроенные возможности языков, на которых пишут решение, но суть одна и та же — перебор или явный с кучей вложенных циклов или неявный через вызов специальных функций. Особенно красиво это выглядит в языках Python или Ruby ( часто в одну-две строчки), помногословнее в Java и C++. Чем дальше, тем натужнее выглядят «силовые» решения, с использованием классов вроде BigInteger. С увеличением номера задачи грубую силу удается успешно применитьвсе реже и все сложнее. Появляется много задач на чистую математику, где нужно решить задачу на бумаге, а потом закодировать что-то совсем несложное. Иногда писать можно обойтись без написания кода вовсе, таких задач много — например, на применение комбинаторики.

Но иногда приятнее найти совсем нестандартное решение.
Читать полностью »

По результатам последней переписи нас примерно 150 мегабайт. Пусть волеизьявление каждого занимает 2 кило. Получается
обьём всех результатов соответствует примерно 300ам гигабайтам. т.е. 60 DVD болванок. Это кстати в самом неоптимизированном варианте, который например подразумевает полное написание имён и адресов голосующих. Если же всех их пронумеровать…
Читать полностью »

Доброго времени суток, читатели. Хочу поделиться неким опытом (советами) при работе с JavaScript + jQuery (по сути, вместо jQuery можете подставить любой другой JS фреймворк). Статья будет интересна новичкам JS и jQuery, но и динозаврам опытным проходить мимо не стоит, в ней вполне можно найти полезную информацию. В основном, в статье я привожу не однозначные случаи, но и место для «стоТыщРазПовтор» я счёл уместным.

image

Инициализация

Сплошь и рядом встречаю загрузку JS файлов в теге <head>. В большинстве случаев — это не корректно! Почему? В этом случае JS начинает загружаться до загрузки HTML, и как следствие клиент дольше ждёт загрузки информации за которой он пришёл. Размещение скриптов в <head> оправдано только в тех случаях, когда JS используется в качестве контроллера (к примеру, всё содержимое на странице мы достаём поблочно через AJAX запросы, в зависимости от URL или Hash). Если не используем, то гораздо лучше вставлять скрипты перед зыкрытием тэга </body>. JS начнёт загружаться только после того, как посетитель увидит страницу.Читать полностью »

Предисловие

Всем доброго времени суток. Представляю вашему вниманию следующую статью из серии освещения новых и малоизвестных эвристических методов оптимизации. Сегодняшний пост своим появлением обязан Эсмату Рашеди, Исааку Ньютону и гравитации.
Гравитационный поиск. Gravitational Search
Читать полностью »

8 сентября были первые выборы на которых я работал, причём даже не наблюдателем, а целым ПРГ (член избирательной комиссии с правом решающего голоса). Выборы на моём участке проходили с использованием КОИБов — чудесных таких машинок, которые затрудняют вбросы (пачкой бюллетень туда не засунешь, а по одному не дадут наблюдатели) и выдают результат, распечатанный на бумажке по одному нажатию кнопки. Отличная, в теории, вещь. Но, как знают все, кто следил за результатами выборов, подсчёты результатов с участков, оборудованных КОИБами заняли практически всю ночь после выборов — то есть как в старые добрые времена с ручным пересчётом. Вот почему так произошло и что с этим можно сделать я и хочу рассказать.

Как оптимизировать подсчёт голосов в день голосования
Чуро Чудо избирательных технологий
Читать полностью »

Джефф Дин из компании Google — это Чак Норрис нашего времени«Джефф Дин компилирует и запускает свой код перед коммитом, но только чтобы проверить на баги компилятор и CPU», — это один из множества шуточных фактов о Джеффе Дине.

Джефф Дин считается кем-то вроде Чака Норриса. Отличие только в том, что он — вовсе не герой боевиков, а инженер-программист компании Google.

Шутки о нём впервые появились на 1 апреля шесть лет назад. Один из коллег Дина по имени Кентон Варда открыл страничку, куда каждый мог добавлять факты о Джеффе Дине. Идею с энтузиазмом подхватили другие разработчики — и вскоре наполнили страничку множеством таких «фактов».
Читать полностью »

Кайдзен — путь к совершенствуКайдзен, кайдзэн (яп. 改善 кайдзэн, ромадзи Kaizen; встречается неверный вариант «кайзен») — японская философия или практика, которая фокусируется на непрерывном совершенствовании процессов производства, разработки, вспомогательных бизнес-процессов и управления, а также всех аспектов жизни.

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

В прошлой статье я писал про эвристические методы оптимизации перебора. В этой статье я расскажу вам о ещё одной, но уже асимптотической оптимизации — meet-in-the-middle.

Типичные для этого метода снижения асимптотики: Meet in the middle: оптимизация перебора и не только и Meet in the middle: оптимизация перебора и не только.

Вступление

Метод заключается в том, чтобы разделить задачу пополам, получить какие-то данные и сопоставить их друг с другом.

Meet-in-the-middle имеет смысл применять, если для конкретной задачи выполняются два условия:
1) Время обработки половины данных асимптотически меньше времени получения итогового ответа.
2) Известен асимптотически более быстрый способ получения ответа для всей задачи с использованием информации об обработки её половинок.
Читать полностью »


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