вопросы оптимизации
Jul. 20th, 2017 08:33 amТочнее, ответы.
1. Переписал скальную работу с векторами, нижний уровень, на джаву (с массивами). Выкинуты боксинг-анбоксинг. Ускорение в 3 раза.
2. Попробовал немутабельно делать (ну там большие коллекции векторов, каждый раз переинстанциируется все. Проигрыш раз в восемь примерно - откатил. Мы ж циники и прагматики.
3. Написал общего вида градиентный спуск (адаптивный шаг, в два раза меньше пересчетов градиента, аппроксимация длины шага в одном направлении). Заменил адхок спуск в алгоритме Самона... (ну и алгоритм починил, там чушь была вместо градиента). Количество итераций, да и вообще операций, упало настолько, что я не понимаю, когда оно успевает. Ну типа вместо двух минут - около секунды.
Такие развлечения.
Вся эта линейная (и нелинейная) алгебра ненамного хуже простого программирования; а если учесть скалу, так еще и лучше.
1. Переписал скальную работу с векторами, нижний уровень, на джаву (с массивами). Выкинуты боксинг-анбоксинг. Ускорение в 3 раза.
2. Попробовал немутабельно делать (ну там большие коллекции векторов, каждый раз переинстанциируется все. Проигрыш раз в восемь примерно - откатил. Мы ж циники и прагматики.
3. Написал общего вида градиентный спуск (адаптивный шаг, в два раза меньше пересчетов градиента, аппроксимация длины шага в одном направлении). Заменил адхок спуск в алгоритме Самона... (ну и алгоритм починил, там чушь была вместо градиента). Количество итераций, да и вообще операций, упало настолько, что я не понимаю, когда оно успевает. Ну типа вместо двух минут - около секунды.
Такие развлечения.
Вся эта линейная (и нелинейная) алгебра ненамного хуже простого программирования; а если учесть скалу, так еще и лучше.