Нашел время, ага
Dec. 30th, 2008 08:18 pm![[personal profile]](https://www.dreamwidth.org/img/silk/identity/user.png)
Перед самым новым годом - юзера не звонят, работа закончена практически - сел профилировать алгоритм, который у меня был единственной нерешенной проблемой в этом году - должен был ускорить работу юзеров, а на самом деле замедлил. Причем хорошо так замедлил.
БЛИН!!!!
Проблему понял буквально полсекунды назад, когда после начала написания поста глянул на профилировщик и на выводимые им данные. Там время ближе к(N^2), чем к o(log(n)) из-за того что загружаемые из БД данные вставляются в начало отсортированного списка(основанного на массиве). Ну я и дятел, однако, убить производительность на такой очевидной мелочи.
И чтобы найти, нужно было всего лишь нажраться вина, впихнуть в состоянии крайнего умопомрачения отладочные логи и вызовы встроенного профилировщика в код и посмотреть на результат. А при разработке загружаемых данных было немного, поэтому сразу не обратил внимания.
БЛИН!!!!
Проблему понял буквально полсекунды назад, когда после начала написания поста глянул на профилировщик и на выводимые им данные. Там время ближе к(N^2), чем к o(log(n)) из-за того что загружаемые из БД данные вставляются в начало отсортированного списка(основанного на массиве). Ну я и дятел, однако, убить производительность на такой очевидной мелочи.
И чтобы найти, нужно было всего лишь нажраться вина, впихнуть в состоянии крайнего умопомрачения отладочные логи и вызовы встроенного профилировщика в код и посмотреть на результат. А при разработке загружаемых данных было немного, поэтому сразу не обратил внимания.
no subject
Date: 2009-01-01 02:56 pm (UTC)Они выделяют память дополнительную и в начале и в конце массива, и поэтому реаллокация занимает одинаково времени, вне зависимости от того, в начало вставлять или в конец.