Я приводил фрагменты кода для 8080 и могу расписать пару примеров для него:
Дополнительные действия в прерывании, связанные с методом Медноногова занимают в районе 146 тактов, пусть даже возьмем с запасом 200, это не принципиально. Пусть частота процессора 2.5 МГц.
При кадровых прерываниях с частотой 50 Гц длительность кадра 2.5e6/50=50000 тактов.
200/50000=0.0040 или 0.4% накладные расходы связанные с методом Медноногова. Посмотрим как это сказывается на выигрыше от стековой пересылки. Если берем развернутые циклы, то без стека 24 такта/байт, стеком - 17 тактов/байт.
1. Если пересылки исходно занимают хотя бы половину прерывания (для пересылок графики в современной насыщенной динамичной игре это даже мало), то при 24 тактах на байт 25000/24=1041 байт.
При 17 тактах/байт 1041*17=17697 тактов.
Итого: 25000-17697-200=7103 тактов чистого выигрыша/кадр при использовании метода Медноногова в описанных условиях.
7103/50000=0.1421= округлю в меньшую сторону 14.2%
2. Аналогично можно посчитать менее напряженный вариант, когда пересылки занимают 1/10 прерывания.
Сразу итог: 1264/50000=0.0253= округлю в меньшую сторону 2.5%
Можно дальше уменьшать число пересылаемых байт и в районе 30 байт на прерывание вариант без стека станет выгоднее. Но при таком незначительном количестве пересылок речь уже идет не о скорости, а о занимаем месте (значит никаких развернутых циклов) и об удобстве использования. Т.е. это предмет для обсуждения в другой ветке.
[свернуть]