Архив метки: Performance

Python: Быстрое удаление из deque по индексу

Объект deque в python — это коллекция, представляющая собой нечто общее между стеком и очередью. deque (double-ended queue — двусторонняя очередь) позволяют потокобезопасно добавлять и «отщипывать» элементы только с начала и конца коллекции, зато за константное время O(1). Начиная с python … Читать далее

Рубрика: Алгоритмы, На заметку | Метки: , , | 1 комментарий

С++: Удаляем из std::vector по вектору индексов

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

Рубрика: На заметку | Метки: , , | 1 комментарий

Python: Пул процессов — параллельные вычисления

Посчитаем сумму простых чисел в диапазоне от 5000000 до 6000000 загрузив все процессорные ядра. Так как GIL в обычном CPython делает паттерн пул потоков совершенно неэффективным, реализуем для наших параллельных вычислений пул из процессов, воспользовавшись стандартным модулем multiprocessing. 

Рубрика: На заметку | Метки: , , , | Добавить комментарий

Python: Memoization или кеш результатов вычислений

Memoize (или мемоизация)- это паттерн оптимизации вычислений. Он очень маленький и простой, но может оказаться очень полезным в некоторых случаях: def memoized(f): memory = {} def wrapper(*args, **kwargs): key = (tuple(args), hash(tuple(sorted(kwargs.items())))) if not key in memory: memory[key] = f(*args, … Читать далее

Рубрика: На заметку | Метки: , , | Добавить комментарий