В этом разделе будут разъяснены некоторые моменты относительно использования оперативной памяти программой созданной на NOMAD, которые дадут понимание того как создавать более компактные приложения.
Итак, первое что занимает оперативную память это снимок искомой области. Так если мы делаем глобальный скриншот экрана размером 1920×1080, то он займет в ОЗУ 1920*1080*4/1024 = 8100, т.е. около 8 мб. Далее каждый шаблон во время своего поиска (неактивный шаблон ничего не делает и память не выделяет, до первого своего вызова), «съест» еще по 8 мб памяти (в действительности еще больше, но остальные затраты несущественны по сравнению с этим). Т.е. если у вас много шаблонов, то программа может занимать в ОЗУ весьма не маленькое количество памяти. В NOMAD был сделан выбор в пользу скорости работы алгоритмов поиска в ущерб размерам программы, если мы попытаемся оптимизировать размеры, то потеряем в производительности.
Но есть способ сократить размер программы — это использование иерархических шаблонов. Потому что подчиненный шаблон не содержит в себе копию всего скриншота, он содержит в себе копию только той части экрана, коей является прямоугольник в который вписана область экрана в которой найден его родитель. Т.е. если мы ищем на экране окно размером 1024×768, и это наш родительский шаблон, то все подчиненные данному родителю шаблоны займут в памяти 1024×768*4/1024 = 3072, т.е. уже около 3 мб, что почти в 3 раза меньше, чем родитель. Соответственно, шаблоны еще ниже в иерархии будут занимать еще меньше памяти. Таким образом, используя иерархические шаблоны можно экономить оперативную память компьютера.