spamsink: (Default)
[personal profile] spamsink


Сегодня провел весь день, копаясь в окаменевшем дерьме индийском коде, тратившем невообразимое количество памяти. Тест, который по идее должен был помещаться в 4 Гб, чуть не поставил раком мою 8 Гб машину (хорошо, я успел сделать ctrl-alt-F1 при первых симптомах, и убить процесс из текстового режима). На 32 Гб машине выяснилось, что процесс хочет 9 Гб с гаком.
Помимо прочего, в коде содержалась конструкция типа
const char * name = obj->getName();
if (obj->isArrayElt()) {
   name = obj->getParent()->getName();
   idx = obj->getIndex();
}

Фишка в том, что это была не протечка, и valgrind, запущенный на весь процесс от начала до конца, не жаловался - строки, возвращаемые из getName(), в конце концов[weasel words] зачищались, но никому не нужных уникальных строк вида "array[index]" это дело порождало , задирая пиковое потребление памяти до небес, столько, что можно было диву даться.

А потом уже одно к одному: оказалось, что хешировать по имени объекта в том месте было вообще необязательно. В результате к концу дня практически вписался в желаемые 4 Гб.
This account has disabled anonymous posting.
If you don't have an account you can create one now.
HTML doesn't work in the subject.
More info about formatting
Page generated Mar. 5th, 2026 02:46 pm
Powered by Dreamwidth Studios