Как посчитать кол-во тактов (скорость) прорисовки символа?

Тема в разделе "WASM.BEGINNERS", создана пользователем Shoorup, 10 дек 2008.

  1. Shoorup

    Shoorup Member

    Публикаций:
    0
    Регистрация:
    20 сен 2007
    Сообщения:
    109
    Необходимо посчитать с большой точностью (возможно до такта) скорость прорисовки символа в шрифте.
    Есть программа AutoCAD которая использует свои собственные шрифты и шрифты TrueType. Один и тот же символ можно описать по разному и выглядеть он будет одинаково. Хочется определить наиболее оптимальное описание.

    Как можно определить программно?
     
  2. MSoft

    MSoft New Member

    Публикаций:
    0
    Регистрация:
    16 дек 2006
    Сообщения:
    2.854
    imho mission impossible
     
  3. Geddricko

    Geddricko New Member

    Публикаций:
    0
    Регистрация:
    13 ноя 2008
    Сообщения:
    32
    Есть мнение, что за один такт происходит вывод одного пиксела плюс по два на начало и на конец.
     
  4. scf

    scf Member

    Публикаций:
    0
    Регистрация:
    12 сен 2005
    Сообщения:
    386
    Geddricko
    Не думаю)))
    А вообще зачем это нужно? если автокад тормозит из-за шрифтов, то можно просто сделать чертеж с массивом символов и замерять время отклика вручную. А если не тормозит, то какая разница?
     
  5. Clear_Energy

    Clear_Energy Алексей

    Публикаций:
    0
    Регистрация:
    3 ноя 2008
    Сообщения:
    375
    Есть мнение, что за один такт загружается только адрес структуры символа (В ЛУЧШЕМ СЛУЧАЕ). Структура обрабатывается КУЧЕЙ функций!!!! Не по одному такту!!! Если учишься на компьютерщика, осваивай основы!!! Даже если ради "корочки", пригодится...


    Будут вопросы: "как он ко мне обращается!!!" и т.д. - читай подпись и учи матчасть )))))))))
     
  6. Pavia

    Pavia Well-Known Member

    Публикаций:
    0
    Регистрация:
    17 июн 2003
    Сообщения:
    2.409
    Адрес:
    Fryazino
    Shoorup
    Если учесть что AutoCAD использует OpenGL или DirectX то говорить об измерении скорость прорисовки символа в шрифте не приходится. Вот число кадров в секунду можно поссчитать.
    А если учестиь что автокад еще и оптимизирует изоброжение и делает отсечения. То нужно определитья с критериями вывода. Иначе неясно что мерием. Влюбом случии скорость отработки корелирует с числом пикселей. А связь с тем как записано изоброжение не суть важно. В любом случии там будут сплайны. А они разбиваются на линии, а линии на треугольники. Дальше в дело вступает система кэшей. Которая и оптимизирует вывод.
    Так что разницы никакой.
     
  7. driver

    driver New Member

    Публикаций:
    0
    Регистрация:
    18 июн 2008
    Сообщения:
    302
    системный шрифт ловчее
     
  8. Shoorup

    Shoorup Member

    Публикаций:
    0
    Регистрация:
    20 сен 2007
    Сообщения:
    109
    Углублю суть проблеммы. Нужно не найти почему кад тормозит - он не тормозит у меня, все с этим ок. Вопрос стоит как быстрей отрисуется описание символа.
    Дело в том, что у када есть свой формат шрифтов. Каждый символ представляет собой набор линий и дуг. Линию и дугу в символе можно нарисовать по разному. Например линия вверх может быть описана 3 байтами так:
    8,(0,37), код 8 указывает что в скобках будет смещение по х-0 и у-37 единиц.
    а можно написать так:
    0F4,0F4,074 тут 0F4 рисует линию вверх (4-направление) F-на 15 единиц. Получается типа 3 отрезка 15+15+7=37
    И там и там линия по 3 байта занимает в файле. И вопрос стоит как быстрей будет. Гадать на кофейных гущах как-то не хочется. Скорость отрисовки пикселей тут уже не стоит. Даже не понятно как кад отрисует линию из трех кусков. Либо одной либо тремя - визуально не проверить.
     
  9. Mikl___

    Mikl___ Супермодератор Команда форума

    Публикаций:
    14
    Регистрация:
    25 июн 2008
    Сообщения:
    3.792
    Shoorup
    1) Бред, заранее рисуешь в память, а потом выводишь уже готовую страничку на экран, склько на экране будет при этом символов и каким они будут нарисованы шрифтом точечным или сплайновым не важно -- вывод на экран займет одно и тоже время. Вопрос скорости важен, если ты занимаешься компьютерной анимацией, а для AutoCAD важна точность воспроизведения, здесь разговор о скорости некорректен.
    2) Если нельзя, но очень хочется -- проверить можно так, замеряешь время и десять тысяч раз в цикле на одном и том же месте рисуешь дугу, снова замеряешь время. Теперь десять тысяч раз выводишь в цикле дугу, нарисованную другим способом -- снова замеряешь время. Чем больше раз выводишь свою дугу на экран -- тем точнее измерение. Но все равно, перечитай пункт превый несколько раз!
     
  10. Shoorup

    Shoorup Member

    Публикаций:
    0
    Регистрация:
    20 сен 2007
    Сообщения:
    109
    Mikl___
    если я правильно понял, любой символ отображенный на экране прежде чем вырисовываться на экран, рисуется в памяти, а затем отображается на экране. Впринципе скорость точная может и не нужна... разве что только для сравнения.
    Тогда получается нарисовать в память можно тоже по разному. По второму пункту трабл. Как мне сделать сей цикл? Как кад программно отрисовывает символ я не знаю. Еслиб знал то наверно бы вопрос отпал сам собой.
     
  11. Y_Mur

    Y_Mur Active Member

    Публикаций:
    0
    Регистрация:
    6 сен 2006
    Сообщения:
    2.494
    Shoorup
    Создаёшь документ в нём символ, тысячу раз копируешь его со смещением например в 0,01мм масшабируешь так чтобы эта каша была примерно размеров в экран, нажимаешь увеличить\уменьшить масштаб и засекаешь время прорисовки вручную по секундомеру, не хватит 1000 символов чтобы успеть замерять сделай больше, главное чтобы символы на экране были крупными и прорисовывались не упрощённо.
     
  12. Shoorup

    Shoorup Member

    Публикаций:
    0
    Регистрация:
    20 сен 2007
    Сообщения:
    109
    Y_Mur спасибо за наводку. Попробую. Хотя мне кажется результат будет абсолютно одинаковый
     
  13. bugaga

    bugaga New Member

    Публикаций:
    0
    Регистрация:
    1 июл 2007
    Сообщения:
    361
    Ну если в AutoCAD есть макросы или чтонить подобное позволяющее вызывать DLL
    тогда да, RDTSC достаточно популярно выдаст количество тактов затраченых на прорисовку, и тому подобное (время, напимер).