Сегодня (прим. переводчика: т.е. 6 лет назад) я перебирал список List, используя конструкцию foreach, и чувствуя небольшое самодовольство, осознавая насколько это производительнее, того что было бы, попытайся я использовать ArrayList. Благодаря чуду Generic компилятор C# аккуратно избегает многочисленные упаковочные операции с помощью экземпляров System.Collections.Generic.IEnumerator<int>
вместо старых System.Collections.IEnumerator
. Тогда я подумал: «действительно ли это самый быстрый способ?» По результатам расследования, получается, что, нет, это не самый быстрый способ.
Читать полностью »
Рубрика «оптимизация» - 41
Что быстрее? foreach vs. List.ForEach vs. for-loop
2014-01-28 в 15:57, admin, рубрики: unity3d, идеальный код, оптимизация, Программирование7 простых оптимизаций, уменьшивших нагрузку на CPU с 80% до 27%
2014-01-26 в 23:08, admin, рубрики: pcrf, базы данных, высокая производительность, оптимизация, разработка, Серверная оптимизация, метки: pcrf, базы данных, высокая производительность, оптимизация, опыт Уже более 3 лет наша команда занимается разработкой такого важного компонента сети оператора как PCRF. Policy and Charging Rules Function (PCRF) – решение для управления политиками обслуживания абонента в сетях LTE (3GPP), позволяющее в реальном времени назначать ту или иную политику, принимая во внимание сервисы, подключенные у абонента, его местонахождение, качество сети в данном месте в данный момент, время суток, объем потребленного трафика и т.д. Под политикой в данном контексте подразумевается доступный абоненту набор сервисов и параметры QoS (качества обслуживания). Анализируя соотношение цена-качество для различных продуктов в данной области от разнообразных поставщиков, мы приняли решение разрабатывать свой продукт. И вот уже более 2 лет, наш PCRF успешно работает на коммерческой сети компании Yota. Решение полностью софтовое, с возможностью устанавливать даже на обычные виртуальные сервера. Работает в коммерции на Red Hat Linux, но в целом возможна установка и под другие Linux-системы.
Читать полностью »
У нас было 540 точек, 120 мерчендайзеров, 30 ТП, 2 супервайзера, 5 таблиц в XLS и один пакет на ПО маршрутизации
2014-01-23 в 7:18, admin, рубрики: Блог компании КРОК, Геоинформационные сервисы, задача коммивояжёра, маршрутизация, оптимизация, управление проектами, метки: задача коммивояжëра, маршрутизация, оптимизация
Пример XLS-таблицы, которая используется до внедрения системы – и отлично подходит в качестве источника первичных данных.
Есть такой классный тип математических задач — маршрутизация торговых представителей. Хорошо известный каждому, изучавшему дискретную математику.
На практике дело в том, что ваши любимые шоколадки в супермаркетах, ларьках и кафе появляются не просто так. Сначала выявляются требования потребителей, возможности производителей, а также пожелания конкретной точки и поставщиков в представлении определенной позиции на рынке.. На основании этих выявленных параметров появляется пул задач для обслуживания каждой точки торговым представителем. Он привозит на точку товар для демонстрации, договаривается о расширении ассортимента продаж, оказывает сервис продаж, плюс контролирует документооборот и осуществляет расчеты. А мерчендайзер от раза до нескольких раз в неделю наведывается по месту продаж, чтобы поправить выкладку и убедиться, что всё в порядке.
Фактически, задача сводится к двум:
- Обобщенной задаче коммивояжера (TSP).
- И построению оптимального расписания-плана.
При этом в задачах также учитываются доступные ресурсы (например, наличие машин, их вместимость, проходимость дорог и так далее), параметры точек (время ее работы точки, частота посещения, перечень задач, которые требуется решать в данной точке и так далее), изменения, например, внезапный переезд одного ларька на другой конец города. Ну и финальный штрих — довольно часто эта задача решается супервайзером с высшим гуманитарным образованием. Читать полностью »
Введение в оптимизацию. Имитация отжига
2014-01-19 в 17:17, admin, рубрики: Алгоритмы, для начинающих, математика, оптимизация, отжиг, метки: для начинающих, оптимизация, отжигВ этой статье я постараюсь максимально доходчиво рассказать о таком простом, но эффективном методе оптимизации, как имитация отжига (simulated annealing). А чтобы не быть причисленным к далёким от практики любителям теоретизировать, я покажу как применить этот метод для решения задачи коммивояжёра.
Для понимания статьи Вам понадобятся минимальные навыки программирования и владение математикой на уровне 9 класса средней школы. Статья рассчитана на людей не знакомых с методами оптимизации или только делающих первые шаги в этом направлении.
Как я сделал тестер-оптимизатор для нахождения прибыльных стратегий на бирже
2014-01-15 в 14:49, admin, рубрики: .net, Алгоритмы, алготрейдинг, математика, оптимизация, торговые роботы, метки: c++, алготрейдинг, оптимизация, торговые роботыВведение
В алгоритмическом трейдинге при создании механических торговых систем (МТС) очень важен вопрос времени жизни торговых алгоритмов. Да, и найти их в принципе достаточно сложно. В условиях постоянно меняющегося рынка рано или поздно наступает момент, когда даже самый совершенный и прибыльный алгоритм начинает приносить убытки. И его нужно, что называется, «подкручивать» или оптимизировать под текущие условия рынка. Одними из самых распространенных являются торговые системы (ТС), работающие со свечными графиками с их многообразием индикаторов для технического анализа.Читать полностью »
Наш опыт оптимизации nginx для раздачи видео-контента
2013-12-30 в 8:12, admin, рубрики: linux, nginx, Блог компании centos-admin.ru, оптимизация, метки: linux, nginx, оптимизация Наша компания обслуживает множество крупных интернет порталов различной тематики. Специфика подобных проектов подразумевает возникновение различных трудностей при росте аудитории, а значит и росте нагрузки на серверы. Один из наших клиентов активно продвигает свой видео-портал, и, как результат, нагрузка неминуемо стала расти, причем большими темпами. В какой-то момент обойтись двумя серверами стало уже невозможно и было принято решение добавить еще два. Затем еще два… в итоге серверов стало 12. Однако, нагрузка продолжает расти и одним только горизонтальным масштабированием ограничиваться нельзя. Настало время задуматься о более глубокой оптимизации.
Читать полностью »
Учебное пособие по кэшированию, часть 1
2013-11-27 в 8:18, admin, рубрики: высокая производительность, кэш, оптимизация, производительность, разработка, Серверная оптимизацияДовольно подробное и интересное изложение материала, касающегося кэша и использования.
Автор, Mark Nottingham, — признанный эксперт в области HTTP-протокола и веб-кэширования. Является председателем IETF HTTPbis Working Group. Принимал участие в редактировании HTTP/1.1, part. 6: Caching. В настоящий момент участвует в разработке HTTP/2.0.
Текст распространяется под лицензией Creative Commons Attribution-Noncommercial-No Derivative Works 3.0 Unported License.
От переводчика: об опечатках и неточностях просьба сообщать в личку. Спасибо.
Читать полностью »
Оптимизация перебора поверхностей, составленных из треугольников
2013-11-26 в 8:15, admin, рубрики: brute-force, Алгоритмы, математика, оптимизация, метки: brute-force, Алгоритмы, оптимизация
Встала задача перебрать все возможные варианты «триангуляций». Это «склейки» из N треугольников, которые подчиняются простым правилам:
- Соприкасаться треугольники могут только по ребру
- Одно ребро может быть общим только у двух треугольников, не больше
Например, из трёх треугольников уникальных вариантов может быть всего два:
[[A B C], [A B D], [A C D]]
[[A B C], [A B D], [A C E]]
При том, что всего вариантов склеек 120. Мне удалось неплохо оптимизировать процесс перебора, который позволил просчитать почти все варианты вплоть до N = 11, но это всё равно очень мало.
Я расскажу как оптимизировал, может быть у уважаемой публики появятся идеи как этот процесс еще ускорить.
Читать полностью »
Оптимизация запросов. Основы EXPLAIN в PostgreSQL (часть 3)
2013-11-25 в 7:19, admin, рубрики: highload, postgresql, оптимизация, метки: highload, postgresql, оптимизация
Подолжаю публиковать авторскую переработку Understanding EXPLAIN от Guillaume Lelarge.
Ещё раз обращу внимание, что часть информации для краткости опущено, так что настоятельно рекомендую ознакомиться с оригиналом.
Предыдущие части:
Оптимизация запросов. Основы EXPLAIN в PostgreSQL (часть 2)
2013-11-23 в 17:04, admin, рубрики: highload, postgresql, оптимизация, метки: highload, postgresql, оптимизация
Подолжаю публиковать авторскую переработку Understanding EXPLAIN от Guillaume Lelarge.
Ещё раз обращу внимание, что часть информации для краткости опущено, так что настоятельно рекомендую ознакомиться с оригиналом.