slava68: (Default)
[personal profile] slava68
Это так возбуждающе :-))) сделать код побыстрее и поменьше размером :-)))

Было время выполнения 231.88 микросекунд на операцию разложения числа в набор сегментов для индикатора, стало 196.0 микросекунд.
Отказался от операторов if... else в пользу switch... case. Но.... это не помогло избавиться от мерцания индикатора, причём никак не могу определить, в какой момент происходит "затык". Поступил "по военному" - запретил прерывания глобально, на время преобразования - всё стало отлично - на индикации (по осциллографу) это никак не сказалось. Теоретически, счётчик тиков должен теперь отставать на 200 микросекунд при каждом преобразовании, но это не так критично, да и исправимо программно (буду просто каждый раз прибавлять это время к переменной)

Стало: http://pastebin.com/Yyqc8fTY
В ассемблере ничего не понимаю, но уже вижу, что стало быстрее. Вот попробую ещё избавиться от "остаток от деления" % - достаточно "дорогая" операция получается :-(

Date: 2016-04-07 10:23 pm (UTC)
From: [identity profile] whoozle.livejournal.com
Попробуйте bcd арифметику, не надо тогда делений будет. Возможно есть инструкции, которые много работы делают.

Date: 2016-04-07 10:49 pm (UTC)
From: [identity profile] slava68.livejournal.com
Почитал про БСДМ BCD - нет, пока я не готов это изучать :-)))

"Но если больше нечем заняться, тогда конечно, двоичнодесятичная арифметика, будет прекрасной заменой анонизму с гемороем.

Date: 2016-04-08 07:55 am (UTC)
From: [identity profile] whoozle.livejournal.com
Да почему же. Это просто в байтах сразу разряды числа хранятся. 23 = 0x23, если есть инструкции коррекции после арифметических операций, то нефиг делать. Но зато никаких делений.

Date: 2016-04-08 08:04 am (UTC)
From: [identity profile] slava68.livejournal.com
Я уже читаю Википедию :-)
https://ru.wikipedia.org/wiki/%D0%94%D0%B2%D0%BE%D0%B8%D1%87%D0%BD%D0%BE-%D0%B4%D0%B5%D1%81%D1%8F%D1%82%D0%B8%D1%87%D0%BD%D1%8B%D0%B9_%D0%BA%D0%BE%D0%B4

Profile

slava68: (Default)
slava68

February 2026

S M T W T F S
1234567
891011121314
15161718192021
22232425262728

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Feb. 13th, 2026 04:16 am
Powered by Dreamwidth Studios