"Bash.org.ru IT Happens Истории ## 4901 – 5000" - читать интересную книгу автора (Bash.org.ru IT)

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

12:00 10.12.2010, IT happens


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


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


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


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


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


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