bash.im ithappens.me zadolba.li
4909

Подгоняя числогрыза

За год до событий, описываемых в истории «Битвы за биты», доучился я по специальности 2205 до диплома. Дипломы у нас были двух видов: конструкторские и исследовательские. Чертить мне было лень, поэтому взялся я за исследовательский. Название придумали на пару с дипломным руководителем: «Исследование способов формирования адресных сигналов в программе управления технологическим процессом сушки и грануляции».

Для того, чтобы мы прониклись, нас сводили на экскурсию в цех этой самой сушки. Увиденное действительно внушало. Сама сушилка — это здоровая бочка, в которой порошок высушивается от спирта. Этилового. Его в техпроцессе 300 литров используется. И атмосфера в бочке спиртовая. Если там заведётся, дай бог памяти, 6% кислорода, то при нагреве до 100 градусов это так долбанёт, что не то что сушилки, а цеха не останется.

Вот в том числе за составом газовой смеси и температурой в этой установке и следил наш числогрыз. Размером он был с хорошую микроволновку, жил в бронированном ящике и использовал в качестве визуализатора обычную писишку. Процессор в нём стоял от той самой «бэкашки», 1801ВМ1. Делал этот монстр 300 тысяч коротких операций в секунду. Это в пределе — в реальности средняя программа работала гораздо медленнее. Из этого «медленнее» мне и надо было сделать хоть немного, но быстрее. Дипломный руководитель сказал, что если я выжму хотя бы три процента прироста производительности и/или экономии памяти, то это уже будет очень хорошо.

На кафедре я получил исполняемую управляющим компьютером программу размером в четыре килобайта в машинных кодах и диплом разработчика алгоритма программы за прошлый год, из которого были успешно скопипащены БЖД, экономика и прочая вода. Методика расчёта времени выполнения команды была взята из статей Зальцмана в журнале «Информатика и образование» за 1989–90 годы. Дальше начался сам диплом.

На самом деле интересно было ковыряться в чужом коде и прикидывать, как его изменить, чтобы очередной кусок длиной в пару десятков байт начал выполняться чуть-чуть быстрее, благо оптимизировать всю программу необходимости не было. Результаты были — и весьма неплохие. На одном из участков удалось добиться экономии памяти в 25% и роста производительности на 16%. Но это рекорд — в основном показатели были на уровне 8–10%. Но по сравнению с заявленными тремя процентами...

Диплом был защищён на отлично с рекомендацией к внедрению в производство. Через три месяца после диплома, зайдя на кафедру, я был отловлен автором программы на предмет прошерстить её всю. А в марте следующего года ко мне зашёл очередной дипломник кафедры забрать текстовочку с дипломом, — видимо, на очередную серию копипаста. Вот такая битва за байты и тики процессора.