О сколько нам открытий чудных...

Тяжела и неказиста жизнь простого программиста!



Программа загрузчик, чей фэйс показан в начале статьи работала всегда верой и правдой, выручала меня неоднократно и вдруг…

Когда чужие программы ерундят при изменении условий их применения — это уже привычно и понятно! Но когда твоя родная, работавшая на разных типах контроллеров, в которой каждую строчку исходника знаешь…

Понадобилось мне перекинуть на компьютер-программатор ( 386 sx ) исходники на *.ASM для прошивки контроллера «Atmel 89c2051». На новом — нет дисководов, на старом — нет USB. Проблема не новая и у меня целый арсенал Windows -> DOS программ для переброски Windows -> USB -> COM -> DOS. Есть также и аналог «Slave» части загрузчика для «ADAM-5510»/«I-7188»/«Octagon» под IBM-DOS, смотри: mtaalamu.ru/blog/959.html

Вот я его и притянул к задачке. О ужас! Счетчик неподтвержденных пакетов растет, а переданных пакетов — по 3 за 1 минуту! Полез проверять шнуры, порты и т.п.… Полный бред! В контроллер «I-7188/D/DOS/512» CPU AMD 80188 40 Mh. грузится, а в IBM-386 sx — НЕТ! Зацепило меня основательно. Угробил день принципиально.

После внимательного наблюдения за счетчиком ошибок пакетов — появилась версия — Windows Master не успевает полноценно принять подтверждение от «Slave» о принятии пакета. Тормозит «ВЕРХ» (1,7 ГГц )! Оказалось, что контроллер «I-7188/D/DOS/512» CPU AMD 80188 40 Mh. — медленнее IBM-386 sx — 40 Mh.!

Подробно смотри:

mtaalamu.ru/blog/938.html
mtaalamu.ru/blog/939.html
mtaalamu.ru/blog/943.html
mtaalamu.ru/blog/959.html
mtaalamu.ru/blog/964.html
mtaalamu.ru/blog/969.html
mtaalamu.ru/blog/980.html

Ответ снизу идет после тормоза — верхний комп успевает принять подтверждение. При работе же с IBM-386 sx — не успевает! Ненавижу такие непонятки! Завел исходники — стал «убивать» один сервис за другим. Скорость растет на 5-10%! Компилировал с оптимизацией на скорость — таже хрень.

Поменял событие — источник прерывания порта СОМ — ВОТ ОНО!




На первый взгляд «Вариант 1» ничем не отличается от «Варианта 2». Однако скорость приема выросла в разы! Если вы думаете, что влияют многие условия «IF» — таки и НЕТ!
Мало в жизни ума — необходимо везение!

Успехов!
  • +7
  • 03 октября 2010, 15:38
  • Markony

Комментарии (7)

RSS свернуть / развернуть
+
0
GOTO убрали, вот и возрасла
avatar

yababay

  • 03 октября 2010, 18:56
+
0
Старая легенда и миф про GO TO...
Внутри Private sub адресация локальная!
Безусловные переходы по GO TO в других алгоритмах
( Внутри Private sub ) проявляют себя как простое, проверенное годами
и очень эффективное средство.
Доказательств не будет — нет времени.
Тогда уж надо все переменные засунуть внутрь Private sub
исходя из этой логики...
Ведь Global переходы по MOV variables (*.asm) для процессора
столь же сложная задача. Даже безусловный переход проще !
Смотрите на Private sub как на перегружаемый класс, убиваемый после
жизни деструктором.
При этом взгляде на тему GO TO — даже предпочтительнее, так как не
оставляет в стеке процессора точек возврата как в IF, DO LOOP, DO UNTIL…
С точки зрения программиста-железячника нет авторитетных истин (тем более легенд), а есть владыка КОМПИЛЯТОР — который сотворит Nativ code только по ему одному известному принципу, и ему плевать на наши представления о процессе !
avatar

Markony

  • 04 октября 2010, 11:17
+
0
Та то ж я шуткую
Просто в Java GOTO нет и он первое, что бросилось в глаза.
avatar

yababay

  • 04 октября 2010, 16:21
+
0
Помнится в 10 классе пейсал курсовую на бейсике(DOS). Не гнушался и goto. Вернее goto были понатыканы везде где только можно. Спишем это на особенности языка =)
avatar

durman

  • 04 октября 2010, 13:35
+
0
Иногда применение goto может быть полезным
avatar

Sergei_T

  • 05 октября 2010, 08:50
+
0
Комрады!

Давайте оформлять топики грамотно:

Перед знаками препинания пробел не ставится
Не нужно ставить лишние пробелы
Название должно отображать смысл топика
Теги должны соответствовать теме топика
avatar

Sergei_T

  • 05 октября 2010, 09:00
+
0
Не нервнисяй насяльника!
avatar

Markony

  • 05 октября 2010, 11:42

Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.