ТЕХНИКА ОПТИМИЗАЦИИ ПРОГРАММ

пятый. Удаление операции деления


Теперь на первое место вырывается функция gen_pswd, в которой процессор проводит более половины всего времени исполнения программы.

За gen_pswd

с большим отрывом следует CalculateCRC – ~21% и Check CRC

– ~15%. Причем, ~40% от общего времени исполнения функции gen_pswd

сосредоточено в одной - единственной горячей точке. Непорядок! Надо оптимизировать!

Двойной щелчок по высоченному прямоугольнику приводит нас к… инструкции IDIV, выполняющий целочисленное деление. Постой, постой, а где у нас в gen_pswd

целочисленное деление? А вот, уже нашли!

      do_pswd(crypteddata, pswd, validCRC, 100*a/max_iter);

Здесь мы вычисляем процент проделанной работы. Забавно, но на это уходит приблизительно столько же времени, сколько и на саму работу! А раз так – ну все эти "градусники" к черту! Удаляем команду деления, подставляя вместо значения прогресса "0" или любое другое понравившееся вам число.

Перекомпилируем, и…. четырнадцать с половиной миллионов паролей в секунду!



Содержание раздела