Здесь несколько раз поднималась тема рисования прямых, конкретных реализаций и способов их сравнения.
Я составил сравнительный график для трех упоминавшихся реализаций, для горизонтально ориентированных линий. По вертикали отложены количества тактов на рисование одной линии. По горизонтали отложены количества горизонтальных фрагментов (прогонов), из которых составлены линии.
Все линии выводились из верхнего левого угла к правому краю, всего 192 линии длиной 256 точек.
Задержки ULA по памяти не учитывались.
* * *
Третий и четвертый графики -- для вертикально ориентированных линий плюс часть горизонтально ориентированных до большой диагонали.
* * *
Ссылки по теме:
http://zx.pk.ru/showthread.php?t=5905
http://zx.pk.ru/showthread.php?t=358
* * *
UPDATE: Графики для вертикально и горизонтально ориентированных теперь слиты вместе, для наглядности. По горизонтали отложены номера тестов от 1 до 447 включительно. В тестах 1...192 строятся линии (0,0)-(255, 0...191). В тестах 193...447 -- линии (0,0)-(254...0, 191).
Кроме того, добавлен график для процедуры DRAW_LINE в ROM. Поскольку строить линии в двух нижних строках знакомест она не умеет, в тестах 1...192 шестнадцать последних тестов не выполняются, а тесты 193...447 строят линии (0,0)-(254...0,175).
Далее, разбирательство в происхождении "пилы" на графике для реализации Vitamin показало, что ее ("пилы") там нет. Видимо, в прежние графики попала таблица значений, полученная еще до отключения задержек по памяти. На общий вид и основные значения на графике, однако, это никак не повлияло.
На всякий случай добавлены использованные исходные тексты и получившиеся таблицы. Исходные тексты транслировались ассемблером pasmo. В таблицах в первой колонке указан номер теста, во второй -- количество тактов. Для пропущенных тестов вместо количества тактов стоит знак вопроса ("?").