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

       

шестой. Удаление мониторинга производительности


Несмотря на прямо-таки гигантскую скорость перебора, функция gen_pswd все еще оттягивает на себя ~22% времени исполнения программы, что не есть хорошо.

Двойной щелчок по ней показывает, что среди более или менее ровного ряда практически одинаковых по высоте диаграмм, возвышается всего лишь один красный прямоугольник. А ну-ка посмотрим что там!

Дизассемблирование позволяет установить, что за этой горячей точкой скрывается уже знакомая нам конструкция:

       if (++x>66666)

       {

              x = 0;

              printf("Current pswd : %10s [%d%%]\r",&pswd[0],progress);

       }

Что ж! Во имя Ее Величества Производительности, мы решаемся полностью отказаться от мониторинга текущего состояния и выбрасываем эти шесть строк напрочь.

В результате скорость перебора повышается еще на пять миллионов паролей в секунду. Хм, вообще-то не такая уж и большая прибавка, так что не факт, что такую оптимизацию следовало выполнять…



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