Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > SynUniHighlighter и SynEdit > Размер и скорость работы компонента


Автор: December 11.11.2004, 21:28
Для тех, кому лень скачивать и экспериментировать smile
На сколько раздувается прога в объёме при использовании компонента (в объёме)? Есть ли длительные процессы, тормозящие загрузку проги?

Автор: Vit 11.11.2004, 21:57
Сам UniSynHignlighter весит не много, но базовый редактор SynEdit довольно большой, думаю на 100-200 кб тянет... Тормозить - не тормозит, разве что если очень большой свод правил, например несколько списков по несколько тысяч ключевых слов... На стандартных расскрасках тормозов нет.

Автор: SCHMaster 17.11.2004, 02:00
Цитата
На сколько раздувается прога в объёме при использовании компонента (в объёме)? Есть ли длительные процессы, тормозящие загрузку проги?

Гм... Ну с размером то я согласен. А вот с торможением - нет. Т.е. да, подтормаживает и не слабо. Зависит это, действительно, от кол-ва правил подсветки. Но не только. Еще:
1. от размера файла - чем больше текста приходится "обрабатывать", тем дольше загрузка (вполне естественно).
2. smile от включенного при загрузке текста режима WordWrap - причина таже. Кстати в более ранних версиях файлы размером около 1мb при включенном WordWrap наглухо вешали TSynEdit. Сейчас мною лично этого незамечено, но говорят - бывает.

Так что... Ничего "военного" и страшного нет - скорость загрузки не медленнее, чем у любого редактора с подсветкой синтаксиса. Но, вроде, здесь не TSynEdit обсуждать собрались? А SynUniHighlighter.
Действительно универсальная штучка. Если кто юзал TSynEdit - рекомендую. Если неюзал - поюзайте сперва без SynUniHighlighter, а потом с ним smile . Сразу все станет ясно.

Автор: Vit 17.11.2004, 06:04
Цитата(SCHMaster @ 16.11.2004, 17:00)
1. от размера файла - чем больше текста приходится "обрабатывать", тем дольше загрузка (вполне естественно).



С какой тихой радости? smile smile Подкраска происходит только того что видно на экране... Т.е. максимум несколько тысяч лексем, даже если файл гигабайтный... Тормозить может SynEdit но никак не подкраска, а обсуждаем мы компонент подкраски синтаксиса а вовсе не SynEdit.

Автор: Vitalik 17.11.2004, 13:47
Цитата(Vit @ 17.11.2004, 06:04)
Подкраска происходит только того что видно на экране... Т.е. максимум несколько тысяч лексем, даже если файл гигабайтный... Тормозить может SynEdit но никак не подкраска, а обсуждаем мы компонент подкраски синтаксиса а вовсе не SynEdit.

Да, собственно сама подкраска происходит только того, что видно на экране.
Но фактически при загрузке файла SynEdit пробегает весь этот файл с помощью связанного с ним компонента подсветки (например, SynUniHighlighter). Он это делает для того, чтобы выяснить какие строки начинаются с каких диапазонов. После этого он этим списочком диапазонов активно пользуется для быстрой раскраски текста при редактировании...
Я думаю этот первый (глобальный) проход текста можно будет как-нибудь использовать...
Но пока что я не вижу хороших способов облегчить этот первый проход. Разве что при первом проходе не искать токены в ключевых словах... Хм... А это может помочь!
Вот только может быть будут проблемы с определением этого первого прохода... Ведь по идее компонент подсветки не знает для чего его в данный момент используют - то ли для первого пробега всего файла, то ли собсвтвенно для подсветки текста на экране...

Автор: SCHMaster 17.11.2004, 20:00
2Vit
Цитата
С какой тихой радости?

Vitalik тебе ответил. Если неверишь - пройдись "пошагово" при компиляции...
Цитата
Тормозить может SynEdit но никак не подкраска, а обсуждаем мы компонент подкраски синтаксиса а вовсе не SynEdit

Всего лишь ответ не вопрос
Цитата
Есть ли длительные процессы, тормозящие загрузку проги?
.
А SynUniHighlighter это все-таки для TSynEdit прибамбас smile

Автор: Vit 17.11.2004, 21:21
Цитата(SCHMaster @ 17.11.2004, 11:00)
Vitalik тебе ответил. Если неверишь - пройдись "пошагово" при компиляции...



Не знал, для самого было откровение smile

Автор: SCHMaster 18.11.2004, 01:35
Vit
Цитата
Не знал, для самого было откровение

Я тоже не так давно узнал, хотя TSynEdit юзаю не первый год. А узнал, пытаясь найти где "оно" притормаживает smile . Нашел smile

Автор: Monty 18.5.2005, 20:24
Удивительно!

У джедаев тормозит сильнее чем сам TSynEdit, но джедаи подкрашивают только то что видно smile ... покрайней мере, я так уверен smile

Автор: Quadr0 18.5.2005, 23:45
...

Автор: Vitalik 19.5.2005, 09:43
Цитата(Monty @ 18.5.2005, 20:24)
У джедаев тормозит сильнее чем сам TSynEdit

Цитата(Quadr0 @ 18.5.2005, 23:45)
У джежаев вообще все компоненты какие-то "сырые", недоделанные.

Что это за джедаи такие? smile

Цитата(Quadr0 @ 18.5.2005, 23:45)
Объёму прибавляет поставляемый с компонентом редактор, который я уже отделил от компонента (шутка ли лишняя форма размером ~ 150кб и 112 pas файл к ней ?!) .

А разве, даже если не использовать SynUniDesigner в uses, он всё равно будет "сидеть" в приложении? smile

Автор: Monty 19.5.2005, 15:58
Цитата(Vitalik @ 19.5.2005, 08:43)
А разве, даже если не использовать SynUniDesigner в uses, он всё равно будет "сидеть" в приложении?

Это я у себя проверел ... ее нет в секции RCDATA ... если форма создается не динамически

Цитата(Vitalik @ 19.5.2005, 08:43)
Что это за джедаи такие?

А. Это я так JEDI называю smile ... им это подходит smile


Цитата(SCHMaster @ 17.11.2004, 19:00)
Если неверишь - пройдись "пошагово" при компиляции...

Не верю! И я вчера пошагово до омерзенья допроходился smile ... и что?
Подсвечиваются только видимые слова ... а точне, видимые строки!

Кстати, чтобы небыло разберихи, я подмечу что проверял я на стандартных подсветках SynHighlighter*.pas smile

Автор: Vitalik 20.5.2005, 14:22
Цитата(Monty @ 19.5.2005, 15:58)
А. Это я так JEDI называю  ... им это подходит

Весело smile Буду знать smile

Цитата(Monty @ 19.5.2005, 15:58)
Не верю! И я вчера пошагово до омерзенья допроходился  ... и что?
Подсвечиваются только видимые слова ... а точне, видимые строки!

Ты правильно подметил: подсвечиваются только видимые строки. А как ты думаешь почему? Как удаётся SynEdit'у узнавать в каком диапазоне (обычный текст, комментарий, строка и т.п.) мы находимся? Ведь для этого пришлось бы знать, что находится в тексте до видимой на экране строки.
Так вот я имел ввиду, что при загрузке текста в SynEdit, он вначале пробегается по всему файлу с помощью процедур SetLine и Next и с помощью процедуры GetRange определяет какой сейчас диапазон на начале строки (и так для каждой строчки). Потом он этой информацией пользуется для ускорения подсветки видимой части текста на экране smile
Вот это-то и имелось ввиду.
"Все беды от недостатка информации" - сказал кто-то...

Цитата(Monty @ 19.5.2005, 15:58)
Кстати, чтобы небыло разберихи, я подмечу что проверял я на стандартных подсветках SynHighlighter*.pas

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

Автор: Monty 20.5.2005, 20:38
Цитата(Vitalik @ 20.5.2005, 13:22)
Ты правильно подметил: подсвечиваются только видимые строки. А как ты думаешь почему? Как удаётся SynEdit'у узнавать в каком диапазоне (обычный текст, комментарий, строка и т.п.) мы находимся? Ведь для этого пришлось бы знать, что находится в тексте до видимой на экране строки.
Так вот я имел ввиду, что при загрузке текста в SynEdit, он вначале пробегается по всему файлу с помощью процедур SetLine и Next и с помощью процедуры GetRange определяет какой сейчас диапазон на начале строки (и так для каждой строчки). Потом он этой информацией пользуется для ускорения подсветки видимой части текста на экране

Толко что хотел спросит насчет Рангов smile ... вот и ответ smile

ps. все думал, а если мы загрузим текст и быстро его пролистаем вниз ... smile

Автор: Quadr0 21.5.2005, 13:32
...

Автор: Vitalik 22.5.2005, 11:56
Цитата(Quadr0 @ 21.5.2005, 13:32)
Файл размечивается до отображения на экране. А во воремя загрузки крутить ничего низя

http://forum.sources.ru/smiles/Main/yes.gif

Цитата(Quadr0 @ 21.5.2005, 13:32)
Конечно! Компонент же его использует! Он уже "вкомпилированн" в SynUniSyn.bpl пекедж.

Стрянно... Я, конечно, с этим вопросом не разбирался, но меня терзают смутные сомнения...
Вот к примеру, vcl70.bpl и rtl70.bpl. Вместе они занимают 2 с лишним метра. Эти bpl-ки всегда встраиваются в exe-шник, если мы используем vcl-компоненты. Так не все же эти 2 метра каждый раз присоединяются к exe-шнику! А только те модули, которые используются в приложении.
Или хотя бы взять "редакторы свойств" для компонента. Не могут же эти редакторы, которые Delphi использует только на этапе конструирования формы каждый раз включаться в exe-шник? Это было бы очень глупо со стороны разработчиков Delphi!

Автор: Quadr0 22.5.2005, 12:09
...

Автор: Vitalik 22.5.2005, 12:35
Цитата(Quadr0 @ 22.5.2005, 12:09)
Даже если не присоединяется. Всё равно раздражает.

Тебя? Как это? smile

Цитата(Quadr0 @ 22.5.2005, 12:09)
И смотри. Одно твоё сообщение противоречит другому. "Кому не нужен дизайнер - могут его отключить" и "Как мы будем задавать правила подцветки без дизайнера в run-time?"

Ты как-то абсолютно неправильно меня процитировал! Я писал:
  1). "Кому не нужен дизайнер в программе (из-за размера исполняемого файла или по другим причинам), могут его безболезненно не использовать." (http://forum.vingrad.ru/index.php?showtopic=52597&view=findpost&p=415183)
  2). "Как ты предполагаешь (после твоего разделения дизайнера) на этапе конструирования формы задать правила для нашего компонента?" (http://forum.vingrad.ru/index.php?showtopic=52597&view=findpost&p=415209)
Как видишь, никакого противоречия! smile

Цитата
А в run-time правила можно и без дизайнера задавать.

А, кстати, теперь ведь тогда станет не очень удобно в run-time подсветку то редактировать! Нужно либо каждый раз предлагать выбирать где же находится дизайнер, либо где-то отдельно хранить его местоположение...
Что есть очень не хорошо...

Автор: Quadr0 22.5.2005, 14:45
...

Автор: Vitalik 22.5.2005, 16:25
Цитата(Quadr0 @ 22.5.2005, 14:45)
Каким макаром ты собираешься на этапе конструирования формы работать с дизайнером. Формы то ещё нет!

Здрасти! Приехали! smile
А что по твоему делается в файле SynUniReg.pas?
Код
//...
procedure Register;
begin
  RegisterComponents( SYNS_ComponentsPage, [TSynUniSyn] );
  RegisterComponentEditor(TSynUniSyn, TSynUniEditor); // регистрируем редактор компонента
end;

{ TSynUniEditor }

procedure TSynUniEditor.Edit; // вот наш редактор - это вызов UniDesigner'a
begin
  TSynUniDesigner.EditHighlighter( Component as TSynUniSyn );
  Designer.Modified();
end;
//...


Цитата(Quadr0 @ 22.5.2005, 14:45)
Вот правила и задаются через типы.

Это ты о чём? Что ты имеешь ввиду?

Цитата(Quadr0 @ 22.5.2005, 14:45)
Предполагается, что те, кто будут юзать дизайнер, будут создавать и редактировать в нём подцветки, а задавать через него правила это какое-то форменное извращение.

Подожди, разве "редактировать подцветки" и "задавать правила" - это не одно и тоже???
Как это ни прискорбно, но похоже мы друг друга совсем не понимаем... Нужно определиться со словарём терминов, чтобы разговаривать не на разных языках...

Цитата(Quadr0 @ 22.5.2005, 14:45)
Предлагаю устроить опрос, указав причны для чего его хотят отделить и почему его лучше оставить и на основе его результатов выбрать компромиссный путь.

Теоретически это было бы не плохо, но:
1). Мало кто быстро среагирует на создание опроса.
2). С тем же результатом можно здесь выкладывать свои мнения, но пока что в обсуждении учавствуем только мы вдвоём
3). Мы сами друг друга похоже не до конца понимаем, а тут еще предлагать голосовать не разобравшись в проблеме...

Поэтому пока что буду ждать твоего ответа...

Автор: Quadr0 22.5.2005, 18:33
...

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)