Необходимо посчитать с большой точностью (возможно до такта) скорость прорисовки символа в шрифте. Есть программа AutoCAD которая использует свои собственные шрифты и шрифты TrueType. Один и тот же символ можно описать по разному и выглядеть он будет одинаково. Хочется определить наиболее оптимальное описание. Как можно определить программно?
Geddricko Не думаю))) А вообще зачем это нужно? если автокад тормозит из-за шрифтов, то можно просто сделать чертеж с массивом символов и замерять время отклика вручную. А если не тормозит, то какая разница?
Есть мнение, что за один такт загружается только адрес структуры символа (В ЛУЧШЕМ СЛУЧАЕ). Структура обрабатывается КУЧЕЙ функций!!!! Не по одному такту!!! Если учишься на компьютерщика, осваивай основы!!! Даже если ради "корочки", пригодится... Будут вопросы: "как он ко мне обращается!!!" и т.д. - читай подпись и учи матчасть )))))))))
Shoorup Если учесть что AutoCAD использует OpenGL или DirectX то говорить об измерении скорость прорисовки символа в шрифте не приходится. Вот число кадров в секунду можно поссчитать. А если учестиь что автокад еще и оптимизирует изоброжение и делает отсечения. То нужно определитья с критериями вывода. Иначе неясно что мерием. Влюбом случии скорость отработки корелирует с числом пикселей. А связь с тем как записано изоброжение не суть важно. В любом случии там будут сплайны. А они разбиваются на линии, а линии на треугольники. Дальше в дело вступает система кэшей. Которая и оптимизирует вывод. Так что разницы никакой.
Углублю суть проблеммы. Нужно не найти почему кад тормозит - он не тормозит у меня, все с этим ок. Вопрос стоит как быстрей отрисуется описание символа. Дело в том, что у када есть свой формат шрифтов. Каждый символ представляет собой набор линий и дуг. Линию и дугу в символе можно нарисовать по разному. Например линия вверх может быть описана 3 байтами так: 8,(0,37), код 8 указывает что в скобках будет смещение по х-0 и у-37 единиц. а можно написать так: 0F4,0F4,074 тут 0F4 рисует линию вверх (4-направление) F-на 15 единиц. Получается типа 3 отрезка 15+15+7=37 И там и там линия по 3 байта занимает в файле. И вопрос стоит как быстрей будет. Гадать на кофейных гущах как-то не хочется. Скорость отрисовки пикселей тут уже не стоит. Даже не понятно как кад отрисует линию из трех кусков. Либо одной либо тремя - визуально не проверить.
Shoorup 1) Бред, заранее рисуешь в память, а потом выводишь уже готовую страничку на экран, склько на экране будет при этом символов и каким они будут нарисованы шрифтом точечным или сплайновым не важно -- вывод на экран займет одно и тоже время. Вопрос скорости важен, если ты занимаешься компьютерной анимацией, а для AutoCAD важна точность воспроизведения, здесь разговор о скорости некорректен. 2) Если нельзя, но очень хочется -- проверить можно так, замеряешь время и десять тысяч раз в цикле на одном и том же месте рисуешь дугу, снова замеряешь время. Теперь десять тысяч раз выводишь в цикле дугу, нарисованную другим способом -- снова замеряешь время. Чем больше раз выводишь свою дугу на экран -- тем точнее измерение. Но все равно, перечитай пункт превый несколько раз!
Mikl___ если я правильно понял, любой символ отображенный на экране прежде чем вырисовываться на экран, рисуется в памяти, а затем отображается на экране. Впринципе скорость точная может и не нужна... разве что только для сравнения. Тогда получается нарисовать в память можно тоже по разному. По второму пункту трабл. Как мне сделать сей цикл? Как кад программно отрисовывает символ я не знаю. Еслиб знал то наверно бы вопрос отпал сам собой.
Shoorup Создаёшь документ в нём символ, тысячу раз копируешь его со смещением например в 0,01мм масшабируешь так чтобы эта каша была примерно размеров в экран, нажимаешь увеличить\уменьшить масштаб и засекаешь время прорисовки вручную по секундомеру, не хватит 1000 символов чтобы успеть замерять сделай больше, главное чтобы символы на экране были крупными и прорисовывались не упрощённо.
Ну если в AutoCAD есть макросы или чтонить подобное позволяющее вызывать DLL тогда да, RDTSC достаточно популярно выдаст количество тактов затраченых на прорисовку, и тому подобное (время, напимер).