Forwarded from Andrew Demonov
У меня была нагрузка на 15к висящих лонг-пулинг коннектов (кооперативный майнинг-пул средней популярности). Когда логика была на потоках, примерно на 10к коннектах процесс жрал около 40 гигабайт памяти и просто зависал из-за постоянного свопинга. Ну и можно себе представить как охреневал планировщик тред-менеджер. Простое переписывание на асинхронщину снизило потребление памяти раз где-то в 15.
#prog #algo #article
Я раньше не понимал, как работает next_permutation. Теперь, кажется, понимаю.
Next lexicographical permutation algorithm
Я раньше не понимал, как работает next_permutation. Теперь, кажется, понимаю.
Next lexicographical permutation algorithm
Forwarded from Jack
потому что порядок вызова аргументов не специфицирован, {} начинает конструктор объекта, создается лок, кидается исключение, а исключения в конструкторе объектов - это плохо, деструктор для не до конца собранного объекта не вызывается. в С++ есть специальный синтаксис для отлова ислючений типа:
object(lock a, int& b) : try m_lock(a) catch ... {}
, но я его забыл, да и не пользовался ни разуForwarded from oleg_log (Oleg Kovalov)
Связный список ретвитов
https://twitter.com/x86instructions/status/1197297170807812097
https://twitter.com/x86instructions/status/1197297170807812097
Twitter
Instructions
Literally all I do as a CPU: push rbp mov rbp, rsp mov rax, [rbp - 8] mov [rbp - 8], rax mov rax, [rbp - 8] mov [rbp - 8], rax mov rax, [rbp - 8] mov [rbp - 8], rax xor rax, rax pop rbp ret https://t.co/CeVBP7paMq