December 19, 2011

Mart Mart
Lab Rat
47 posts

Защо е толкова бавен QSyntaxHighlighter-а?

 

Здравейте отново,
Имам един текстов редактор (QTextBrowser) чиито текст се оцветява чрез QSyntaxHighlighter. Когато текста е много голям оцветяването става дразнещо бавно. В допълнение за удобство съм направил като се маркира една дума и се натисне едно бутонче да оцвети всички такива дум със жълт фон. Ако текста е много голям чакам няколко секунди докато ги оцвети и още толкова докато махне оцветяването. Това нормално ли е или нещо бъркам някъде?
Под Линукс, в Kate подобно нещо става светкавично.

4 replies

December 19, 2011

task_struct task_struct
Ant Farmer
355 posts

Здравей,

не съм работил с този клас, но ако споделиш малко код може да измислим, защо се получава така. Също може да пробваш да разгледаш кода на Kate.

 Signature 

“Most good programmers do programming not because they expect to get paid or get adulation by the public, but because it is fun to program.”
- Linus Torvalds

December 20, 2011

Mart Mart
Lab Rat
47 posts

Конкретен пример не мога да дам. Мога цялата програмка да изпратя. Може би по пощата?

П.П. Имам някакъв проблем с форума – постоянно ме изхвърля. Като направя някакво действие и ми казва, че трябва първо да се логна, а аз съм логнат. Започвам да натискам F5 и нещата се оправят след няколко рефреша на страницата. После пак се скапва и пак F5 ги оправя.

December 20, 2011

task_struct task_struct
Ant Farmer
355 posts

Бих ти предложил, нещо което направиха и в Qt Craetor. Изнеси оцветяването в отделна нишка. С QtConcurrent [developer.qt.nokia.com] би трябвало да стане лесно и бързо :)

 Signature 

“Most good programmers do programming not because they expect to get paid or get adulation by the public, but because it is fun to program.”
- Linus Torvalds

December 21, 2011

Mart Mart
Lab Rat
47 posts

С отделна нишка не съм пробвал, защото не виждам как това ще реши проблема със скоростта.
Имам един текстов редактор, който оцветява текста. Самия текст е подобна на асемблер програма. Може да достигне хиляди редове. Самия текст го осветява мигновено в смисъл, че като направя копи-пейст на даден фрагмент, без значение колко е голям, той се оцветява мигновено. Имам едно бутонче което по същата технология оцветява потребителски избрания (маркиран) текст със жълт фон за да се откроява. Маркирам например думата label, натискам бутончето и всички думи label стават със жълт фон. Нещо такова. Само че това става много бавно. Ако са няколко хиляди реда, става за няколко секунди. През това време програмата е блокирала и нищо не може да се прави.
Ако го отделя в друга нишка, ще постигна само това, че няма да ми забива програмата. Пак ще си чакам докато ми оцвети думите. А на мен чакането ми е дразнещото, а не забиването на програмата.
Не знам защо при пействане на текст той се оцветява веднага, а при другото се чака толкова много. Все пак си мисля че бъркам нещо.
Правя следното: копирам целия текст – 4000 ред, изтривам го, а после го пествам. Показва се почти веднага – след 1-2 сек., напълно оцветен. В същото време ако реша да оцветя една дума и чакам над 8 секунди…
8 секунди са голямо чакане, дори да е в друга нишка.

 
  ‹‹ приложения на симбиан      Междуплатформено компилиране ››

You must log in to post a reply. Not a member yet? Register here!