Energy #04
03 мая 1997

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

<b>Оптимизация</b> - Оптимизация процедур.
╔════════════════════════════════════════╗
║▒▒▒▒▒▒▒▒▒▒▒▒▒ ОПТИМИЗАЦИЯ ▒▒▒▒▒▒▒▒▒▒▒▒▒▒║
╚════════════════════════════════════════╝

                             (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. Создание персонажей. Выбор амплуа.

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

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


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

Похожие статьи:
Блэккэтница - Переделка SMUC v.1.0 под NemoBus
Пролог - мы с радостью поместим Ваши статьи , рассказы и т.д. и т.п.
Глюки - баг-репорты читателей газеты.
Реклама - Реклама и объявления ...
Зазеркалье - Из хроники исчезновений (продолжение).

В этот день...   1 января

SibNews #08, Woot! #01, Spectrum Magazine #01, ACNews #25, Psychoz #14, ACNews #14, Last 128 #08, Last 128 #06, Last 128 #05, Last 128 #04, Last 128 #03, Last 128 #02, Last 128 #09, Last 128 #3.5, Last 128 #8.025, Sinclair Club #05, Last 128 #M!R 01, Fantadrom #01, Buzz #20, Last 128 #01, DonNews #13, Nicron #120, Promised Land #01, Inferno #01, Marazm #25, Ultimathum #01, Marazm #21, Hooy Mag #02, KrNews #11, Marazm #22, Marazm #23, ZX Football 2000 #01, Codemania #01, Always #03, Bugs #02, IzhNews #08, Virtual Worlds #01, Listok #04, Scenergy #02, Flash Info #18, Marazm #16, Marazm #17, Zed #01, Balagan #02, ZX Format #08, ZX Power #03, Shock #01, Impulse #02, Deja Vu #03, ZX Club #08, ZX Club #06, Numberology #01, Marazm #13, Marazm #12, Marazm #14, Gorodok #02, Zodiac #01, Marazm #15, Deja Vu #07, Marazm #11, Deja Vu #07, Playboy #03, Crazy News #2, Crazy News #4, ZX Light #01, Crazy News #5, Playboy #02, ZX News #03, ZX Review #1-2, Read Me #02, Crazy News #3, Nicron #13, Read Me #01, Public Spirit #01, Faultless #06, Faultless #05, ZX Software #01, Stump #04, Speccy #07, Возраждение #0, Speccy #03, On-Line #17, Scene+ #01, Welcome Press #01, ZX Konig #04, Adventurer #01, Faultless #05, Faultless #04, Di Halt #01, Faultless #01, Playboy #01, Crazy News #1, Faultless #03, Pioneer #03, Sinclair Town #02, ZX Magazine #01, Eldorado #01, ZX Magazine #02, Spectron #01, ZX News #01, ZX Konig #02, 200 #W, Welcome Press #00, Dune #07, Subliminal Extacy #01, Subliminal Extacy #02, ZX Konig #01, Subliminal Extacy #00, Muchomor #01, Spectrofon #01, ZX Revija #02, Outlet #01, Outlet #1-3