← All posts tagged programming

pktfag

Вот смотрю я на два проекта: flamerobin — написан на С++ и doublecmd — написан на lazarus (т.е. на freepascal), и вижу неэффективность сборки flamerobin. У flamerobin один только файл компилируется 6 секунд на моем компе, тогда как весь doublecmd компилируется за 18 секунд. doublecmd возможно сделать две версии: gtk и qt, — без изменения исходников. Оба проекты кроссплатформенны, т.е. собираются как на винде, так и на линуксе.

pktfag

В 2007 году некой программе нужно было полтора часа (90 минут) для выполнения некой работы (расчета). В 2009 году мне удалось ее ускорить в 3 раза, т.е. она уже работала полчаса (30 минут). А сейчас мне удалось ее ускорить в 10 раз! Она работает 3 минуты!
Объясняю как это я сделал :)
В 2007 году эта программа для выполнения расчета загружала все таблицы в память и работала с ними. А это долго, так как памяти может не хватать, своп и т.д.
В 2009 году я ее ускорил за счет создания индексов в нужных местах.
Сейчас я сначала загружаю все данные из таблиц в некую компактную структуру, эту структуру рассчитываю, а потом выгружаю данные из структуры снова в таблицы. Эта маленькая структура и дает ускорение в 10 раз (если сравнить с 2007 годом, то вообще в 30 раз), так как влезает в кэш процессора.
До сих пор не верю, что получилось :)