Алексей АКАТОВ ( http://aka-alex.narod.ru/ )


Оптимизация программ для микрокомпьютера "Электроника МК 85(М)"


Ниже приведены некоторые общие правила оптимизации программ для микрокомпьютера "Электроника МК 85(М)".
Следуйте этим правилам и Ваши программы будут занимать меньше памяти и работать быстрее.

1) Использование вместо условий переходов с вычисляемыми адресами.
Пример:
5 VAC
10 DRAW X, Y
20 K$ = KEY: IF K$ = "" THEN 20
30 DRAWC X, Y
40 GOTO ASCI K$
49 GOTO 10
50 IF Y > 0; Y = Y - 1
51 GOTO 10
52 IF X > 0; X = X - 1
53 GOTO 10
54 IF X < 59; X = X + 1
55 GOTO 10
56 IF Y < 6; Y = Y + 1
57 GOTO 10
Этот пример позволяет перемещать точку по экрану клавишами 4, 6, 2, 8 (наверное, самый быстрый способ). Для соседних клавиш стоят заглушки, а вот нажимать произвольно любые клавиши не стоит, произойдет ошибка, т.к. переход осуществляется на строку, номер которой соответствует коду клавиши.
Аналогично можно организовать конечный автомат, если хранить номер строки следующего состояния.

2) Экономим последние байты. При наборе программы помните, что чем больше удалось впихнуть в одну строку программы, тем меньше все это будет занимать памяти. Вообще хорошо, когда еще удаляются ни кому не нужные пробелы между номером строки и первым оператором, а также между оператором и операндом.

3) Не стоит очень обильно во время выполнения комментировать программу, ведь кроме Вас ее все равно ни кто пользоваться не будет, а Вы и без этого поймете, что там имеется в виду. Это позволяет экономить драгоценную память.

4) Старайтесь не повторять по многу раз похожий код, лучше его вынести в подпрограмму и, где требуется, просто вызывать ее.

5) Для хранения массива чисел диапазона 0..191 рациональнее использовать не числовой массив, а строковый. Тогда в каждую ячейку можно уместить семь элементов массива, т.е. экономия памяти 7-ми кратная (!), конечно если не принципиальна скорость выполнения.

6) Данные к программе можно хранить не в самой программе, а в переменных, заполняя их после набора кода. Это хорошо уменьшить занимаемую программой память. Только в этом случае станет опасен оператор VAC.

7) Оператор LETC допускает более краткую запись, в случае нулевых значений в конце. Например, вместо LETC "VVVV000" можно (и желательно) написать LETC "VVVV".

P.S. Если Вам известны другие приемы оптимизации, убедительно прошу прислать их описание мне по адресу: akatov@list.ru. Заранее благодарен.

От Ведущего сайта: присоединяюсь к постскриптуму Алексея и жду ваших предложений по адресу: mk85@narod.ru



 

Сайт управляется системой uCoz