Важная информация

User Tag List

Страница 1 из 9 12345 ... ПоследняяПоследняя
Показано с 1 по 10 из 85

Тема: О рисовании прямых

  1. #1
    Activist Аватар для Higgins
    Регистрация
    03.05.2007
    Адрес
    St. Petersburg
    Сообщений
    297
    Благодарностей: 153
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    Lightbulb О рисовании прямых

    Здесь несколько раз поднималась тема рисования прямых, конкретных реализаций и способов их сравнения.

    Я составил сравнительный график для трех упоминавшихся реализаций, для горизонтально ориентированных линий. По вертикали отложены количества тактов на рисование одной линии. По горизонтали отложены количества горизонтальных фрагментов (прогонов), из которых составлены линии.

    Все линии выводились из верхнего левого угла к правому краю, всего 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. В таблицах в первой колонке указан номер теста, во второй -- количество тактов. Для пропущенных тестов вместо количества тактов стоит знак вопроса ("?").
    Миниатюры Миниатюры Нажмите на изображение для увеличения. 

Название:	graph-all.jpg 
Просмотров:	438 
Размер:	20.0 Кб 
ID:	24960   Нажмите на изображение для увеличения. 

Название:	graph-middle.jpg 
Просмотров:	399 
Размер:	19.9 Кб 
ID:	24961   Нажмите на изображение для увеличения. 

Название:	graph-fastest.jpg 
Просмотров:	391 
Размер:	19.8 Кб 
ID:	24962  
    Вложения Вложения
    Последний раз редактировалось Higgins; 13.02.2011 в 15:23.
    Higgins ZX Spectrum Emulator 8.10 alpha 3 available
    Please write us to report a bug or request a feature.

  2. Эти 6 пользователя(ей) поблагодарили Higgins за это полезное сообщение:
    GriV (10.01.2010), introspec (23.08.2013), James DiGreze (13.03.2015), moroz1999 (16.01.2011), Raider (29.06.2011), Vitamin (26.12.2009)

  3. #1
    С любовью к вам, Yandex.Direct
    Размещение рекламы на форуме способствует его дальнейшему развитию

  4. #2
    Guru
    Регистрация
    08.10.2005
    Адрес
    Москва
    Сообщений
    9,937
    Благодарностей: 3436
    Mentioned
    2 Post(s)
    Tagged
    1 Thread(s)

    По умолчанию

    Лучше б тест оценивал не количество фрагментов, а количество точек. Т.е. чтобы можно было примерно сказать, сколько тактов на точку в среднем тратит та или иная процедура рисования линии.

  5. #3
    Vitamin C++ Аватар для Vitamin
    Регистрация
    14.01.2005
    Адрес
    Таганрог, Россия
    Сообщений
    4,031
    Благодарностей: 1426
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Круто. А тест вертикально-ориентированных линий? Т.е. (если я правильно понял суть имеющегося теста), "закрасить" вторую половину экрана.

  6. #4
    Activist Аватар для Higgins
    Регистрация
    03.05.2007
    Адрес
    St. Petersburg
    Сообщений
    297
    Благодарностей: 153
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Titus Посмотреть сообщение
    Лучше б тест оценивал не количество фрагментов, а количество точек. Т.е. чтобы можно было примерно сказать, сколько тактов на точку в среднем тратит та или иная процедура рисования линии.
    Ну, из этих графиков можно сделать такую оценку.

    Пара замечаний:

    1) Смысл такого подхода к тестированию именно в том, что он не дает никаких усредненных значений, т.е. его результаты никаких не зависят от конкретных выборок.

    2) Я смотрю на этот тест не как на бенчмарк, а как на характеристический тест, который отражает фундаментальные свойства реализаций. В этом смысле графики важны не абсолютными значениями, которые показывают реализации, а самими видами кривых как вообще, так и локально, на интересующих участках.

    Почему этот тест является характеристическим, на этот счет есть (у меня в голове) довольно длинное теоретическое обоснование, но, во-первых, стоит ли оно времени, потраченного на его изложение, а во-вторых, для людей в теме оно должно быть достаточно очевидным. Судя по ответу, Vitamin, например, уже для себя оценил идею.

    Цитата Сообщение от Vitamin Посмотреть сообщение
    А тест вертикально-ориентированных линий? Т.е. (если я правильно понял суть имеющегося теста), "закрасить" вторую половину экрана.
    Да, есть желание сделать то же для вертикально ориентированных. Попробую.

    Не совсем половину. Вертикально ориентированные получаются с координатами конца от (0,191) до (190,191), т.е. всего 191 линия 192 точки каждая.
    Higgins ZX Spectrum Emulator 8.10 alpha 3 available
    Please write us to report a bug or request a feature.

  7. #5
    Guru
    Регистрация
    08.10.2005
    Адрес
    Москва
    Сообщений
    9,937
    Благодарностей: 3436
    Mentioned
    2 Post(s)
    Tagged
    1 Thread(s)

    По умолчанию

    Цитата Сообщение от Higgins Посмотреть сообщение
    1) Смысл такого подхода к тестированию именно в том, что он не дает никаких усредненных значений, т.е. его результаты никаких не зависят от конкретных выборок.

    2) Я смотрю на этот тест не как на бенчмарк, а как на характеристический тест, который отражает фундаментальные свойства реализаций. В этом смысле графики важны не абсолютными значениями, которые показывают реализации, а самими видами кривых как вообще, так и локально, на интересующих участках.
    В таком случае этот тест сам в себе, им нельзя пользоваться, чтобы сравнить, быстрее иная процедура рисования линии, нежели представленные в этом тесте, или медленнее.

    Мы в свое время пользовались методикой сравнения в тактах на точку. Сразу было понятно, какая линия быстрее, какая медленнее.

  8. #6
    Vitamin C++ Аватар для Vitamin
    Регистрация
    14.01.2005
    Адрес
    Таганрог, Россия
    Сообщений
    4,031
    Благодарностей: 1426
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Higgins Посмотреть сообщение
    Не совсем половину. Вертикально ориентированные получаются с координатами конца от (0,191) до (190,191), т.е. всего 191 линия 192 точки каждая.
    Ну почему же- у тебя были линии с координатами конца от (255,0) до (255,191). А теперь надо от (0,191) до (255,191). Или подразбить его на два теста- (0,191)...(191,191) и (192,191)...(255,191).

  9. #7
    Activist Аватар для Higgins
    Регистрация
    03.05.2007
    Адрес
    St. Petersburg
    Сообщений
    297
    Благодарностей: 153
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Titus Посмотреть сообщение
    В таком случае этот тест сам в себе, им нельзя пользоваться, чтобы сравнить, быстрее иная процедура рисования линии, нежели представленные в этом тесте, или медленнее.

    Мы в свое время пользовались методикой сравнения в тактах на точку. Сразу было понятно, какая линия быстрее, какая медленнее.
    Попробую объяснить на пальцах: одна и та же процедура может быть "быстрее" на одной линии и "медленнее" на другой. Среднее значение тактов на точку будет зависить от соотношения тех и других в выборке. Данных на графике достаточно, чтобы оценить среднее значение тактов на точку для любой заданной выборки.

    ---------- Post added at 20:07 ---------- Previous post was at 19:56 ----------

    Цитата Сообщение от Vitamin Посмотреть сообщение
    Ну почему же- у тебя были линии с координатами конца от (255,0) до (255,191). А теперь надо от (0,191) до (255,191). Или подразбить его на два теста- (0,191)...(191,191) и (192,191)...(255,191).
    Линия (0,0)-(255,191) -- горизонтально ориентированная (delta X > delta Y).

    Вторую часть (192,191)...(255,191) сделать можно, но длина линий будет уже другой, это придется учитывать. Плюс, все линии в этом диапазоне попадают в ту же категорию горизонтальной ориентированных линий с отношением DX/DY меньше двойки (длины прогонов 1-2 точки), что и линии в диапазоне (255,128) ... (255,191), поэтому в общем-то эти линии уже оказываются представленными в графиках.
    Higgins ZX Spectrum Emulator 8.10 alpha 3 available
    Please write us to report a bug or request a feature.

  10. #8
    Vitamin C++ Аватар для Vitamin
    Регистрация
    14.01.2005
    Адрес
    Таганрог, Россия
    Сообщений
    4,031
    Благодарностей: 1426
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Higgins Посмотреть сообщение
    поэтому в общем-то эти линии уже оказываются представленными в графиках.
    Ну значит только первую часть- вертикально ориентированные.

  11. #9
    Guru
    Регистрация
    08.10.2005
    Адрес
    Москва
    Сообщений
    9,937
    Благодарностей: 3436
    Mentioned
    2 Post(s)
    Tagged
    1 Thread(s)

    По умолчанию

    Цитата Сообщение от Higgins Посмотреть сообщение
    Попробую объяснить на пальцах: одна и та же процедура может быть "быстрее" на одной линии и "медленнее" на другой. Среднее значение тактов на точку будет зависить от соотношения тех и других в выборке. Данных на графике достаточно, чтобы оценить среднее значение тактов на точку для любой заданной выборки.
    Какой же я невнимательный. Очевидно фрагменты - это и есть точки)

  12. #10
    Vitamin C++ Аватар для Vitamin
    Регистрация
    14.01.2005
    Адрес
    Таганрог, Россия
    Сообщений
    4,031
    Благодарностей: 1426
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Titus Посмотреть сообщение
    Очевидно фрагменты - это и есть точки)
    Не. Фрагмент- горизонтальная последовательность точек. Именно поэтому их 1 для полностью горизонтальной линии, 2 для линии с разницей концов в 1 пиксел и т.д. до 191.

Страница 1 из 9 12345 ... ПоследняяПоследняя

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •