Energy #04
03 мая 1997

Оптимизация - Оптимизация процедур.

╔════════════════════════════════════════╗
║▒▒▒▒▒▒▒▒▒▒▒▒▒ ОПТИМИЗАЦИЯ ▒▒▒▒▒▒▒▒▒▒▒▒▒▒║
╚════════════════════════════════════════╝

                             (C) Demon/LGN

              ОПТИМИЗАЦИЯ!!!

                           Жадность фраера
                                  погубит.
                        Народная мудрость.

 > D: (D - это DEMON) С недавних пор я по-
нял,  что  за  словом  "ОПТИМИЗАЦИЯ" может
скрываться  не только польза... Эта статья
является  откликом на письмо, опубликован-
ное  в  ZX-Ревю 97/1-2(стр.47), написанное
неким AmiS. Передаю ему слово.

 >  A:  (A - это AmiS) Многие уже писали о
том, что пора бы покончить с сырыми и неп-
родуманными процедурами.

 >  D: Да ну! В отличие от тебя люди дума-
ют!

 > A: Но сами делают в своих работах недо-
пустимые,  с  моей точки зрения, просчеты.
Далее  приведу  несколько  примеров.
   Перед  нами задача : написать самую ко-
роткую процедуру очистки экрана.

 > D: А кто ее ставил?

 >  A: Многие начинающие сделают нечто по-
хожее на:

        LD    HL,#4000
        LD    DE,#4001
        LD    BC,#1AFF
        LD    (HL),L
        LDIR

    Посидев  некоторое  время можно сокра-
тить процедуру:

        LD    HL,#5B00
        DEC   HL
        XOR   A
        LD    (HL),A
        OR    H
        JR    NZ,$-6

 >  D: Извиняюсь, что прервал сей бред, но
мне  хочется постоять за этих самых "НАЧИ-
НАЮЩИХ".  Если бы AmiS еще ко всему и счи-
тать  умел, то цены бы ему не было. Первая
программа  занимает  12  байт  и  работает
145184  такта. Процедура же гения - 9 байт
(Ур-р-р-а!!! Он выиграл 3 байта), но время
исполнения... 944686 тактов... Кругленькая
циферка... Правда работать этот гениальный
бред  будет  со скоростью MORTAL KOMBAT на
ЕС1841  (а именно в 6.5 раз медленнее...).
Стоит призадуматься о смысле такой ОПТИМИ-
ЗАЦИИ. Но AmiS'у достигнутого мало и он не
перестает нас удивлять...

 >  A:  Посмотрите на следующий пример. Он
родился  за несколько ЧАСОВ упорного штур-
ма.

 >  D:  Даже  БАЙСЯК  (тот,  кто  пишет на
BASIC'е) не смог бы столько тормозить.

 >  A:  Зато  теперь можно смело применять
эту идею в своих программах:
    Задача:  "разворот"  байта  (т.е обмен
битов  0-7,  1-6, 2-5, 3-4). Было 76543210
(%01100001), стало 01234567 (%1000110)

        LD    A,#80
        ADD   HL,HL
        RRA
        JR    NC,$-2
        LD    H,A

    Байт приходит в H, в нем же и уходит.

 >  D: Для начала приведу процедуру, кото-
рой пользуюсь я (и не только я!):

        RR    n
        RLA
        RR    n
        RLA
        RR    n
        RLA
        RR    n
        RLA
        RR    n
        RLA
        RR    n
        RLA
        RR    n
        RLA
        RR    n
        RLA
        LD    n,A  ,где n - любой регистр

    Процедура AmiS'а: занимает 7 байт, ра-
ботает  134  такта.  Ограничения:  входной
байт только в H.
    Вторая  процедура:  занимает  25 байт,
работает 100 тактов. Ограничения: нет.
    В размерах автор сэкономил 18 байт, но
в скорости проиграл 34 такта.

    Если  я кого-либо еще не убедил в пра-
воте  моих слов, то пусть они обратят свои
взоры на МЕГАДЕМЫ и множество других прог-
рамм,  в  которых  "ну о-о-о-очень" крутые
эффекты.  В  них никто не экономит память,
т.к.  заботятся о том, чтобы все выглядело
красиво, а не занимало поменьше места (ко-
торого никому никогда не хватает).

    Также настораживают слова AmiS'а, обе-
щающего   в  последующих  номерах  ZX-Ревю
представить  вниманию  "НАЧИНАЮЩИХ"  проги
лучших   кодеров,  "доведенные  до  СОВЕР-
ШЕНСТВА".  Будем  надеяться,  что он их не
собирается ОПТИМИЗИРОВАТЬ!!!




Другие статьи номера:

BBS - Список работающих BBS в Минске. Какой модем лучше HAYES или C-DOS.

FANTASY - Роман Г.Гаррисона "Чума из космоса" (глава 1).

HORROR - Кукурузные дети.

PRICE LIST - Реклама и объявления ...

Анекдот - 3 анекдота. Смешилки - страшилки (4).

Байки из склепа-2 - LORD of CHAOS (глава 4-8)

Записки - Дневник одного мальчика.

Металлургия - О схеме Azure Sound Drive v8.6.

Оптимизация - Оптимизация процедур.

Сказание Барда - Мини help к BARDS TALE. Создание персонажей. Выбор амплуа.

Сказочка - Падал прошлогодний снег.

Тест - Комплексное тестирование по школьным предметам.


Темы: Игры, Программное обеспечение, Пресса, Аппаратное обеспечение, Сеть, Демосцена, Люди, Программирование

Похожие статьи:
Проза - А.Н.Толстой: Японская комната.
Байки - На речку: Было это 13 июня...
AD&D - Значение способностей.

В этот день...   25 июня