Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 02.12.2009, 09:41   #21
Alex Cones
Trust no one.
Старожил
 
Аватар для Alex Cones
 
Регистрация: 07.04.2009
Сообщений: 6,526
По умолчанию

А может поступить так:?
-На экран (в мемо) вываливается не весь код, а только тот участок, который поместится на экране так, чтобы у мемки не появились полосы прокрутки. А скроллер справа - левый, он "перематывает" текст, но не в мемо, а в буфере, а во время скролла посылает в мемо новый участок кода. Таким образом идет работа не со всем кодом одновременно, а только с таблицей, примерно 20*60 символов.
SQUARY PROJECT - НАБОР БЕСПЛАТНЫХ ПРОГРАММ ДЛЯ РАБОЧЕГО СТОЛА.
МОЙ БЛОГ
GRAY FUR FRAMEWORK - УДОБНАЯ И БЫСТРАЯ РАЗРАБОТКА WINAPI ПРИЛОЖЕНИЙ
Alex Cones вне форума Ответить с цитированием
Старый 02.12.2009, 09:49   #22
Utkin
Старожил
 
Аватар для Utkin
 
Регистрация: 04.02.2009
Сообщений: 17,351
По умолчанию

Цитата:
Сообщение от Alex Cones Посмотреть сообщение
А может поступить так:?
-На экран (в мемо) вываливается не весь код, а только тот участок, который поместится на экране так, чтобы у мемки не появились полосы прокрутки. А скроллер справа - левый, он "перематывает" текст, но не в мемо, а в буфере, а во время скролла посылает в мемо новый участок кода. Таким образом идет работа не со всем кодом одновременно, а только с таблицей, примерно 20*60 символов.
Ты не совсем понял сути. Не важно что показывается в Мемо и каким образом. Я загружаю прогу в редактор, время на это затрачивается мало, поскольку никакой обработки не происходит, но как только я отправляю ее на запуск мне нужно сначала передать данные в интерпретатор, а он расжевывает прогу по своему и представляет ее как массив массивов строк с кучей ссылок друг на друга и прочей служебной информацией (это дает некоторые преимущества). Но на это требуется время. Вот я и хочу сократить это время, потому что перед стартом проги происходит некоторая задержка, которая меня не устраивает совершенно.
Маньяк-самоучка
Utkin появился в результате деления на нуль.
Осторожно! Альтернативная логика
Utkin вне форума Ответить с цитированием
Старый 02.12.2009, 10:07   #23
mutabor
Телепат с дипломом
Старожил
 
Аватар для mutabor
 
Регистрация: 10.06.2007
Сообщений: 4,929
По умолчанию

1. Мне кажется мемо далеко не лучший выбор для редактора.

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

3. Отображение сильно замедляет, в память нужно читать из файла. А выводить только то что нужно (если большие файлы).

Я ставил метки по всему коду, и замерял время выполнения, на что сколько времени уходит. Все это писал в лог. А по нему уже видно что именно требует оптимизации в первую очередь. Если тормоза именно при обработке текста, а не из-за отображения, то это уже другая тема.
The future is not a tablet with a 9" screen no more than the future was a 9" black & white screen in a box. It’s the paradigm that survives. (Kroc Camen)
Проверь себя! Онлайн тестирование | Мой блог
mutabor вне форума Ответить с цитированием
Старый 02.12.2009, 10:09   #24
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

при чтении он не обновляется вроде.
значит мож алгоритм не совершенен?
или действительно вывести в отдельный поток?
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 02.12.2009, 10:14   #25
mutabor
Телепат с дипломом
Старожил
 
Аватар для mutabor
 
Регистрация: 10.06.2007
Сообщений: 4,929
По умолчанию

Цитата:
или действительно вывести в отдельный поток?
Хоть в десять, это ничего не даст, кроме устранения подвисания окна на время обработки.
The future is not a tablet with a 9" screen no more than the future was a 9" black & white screen in a box. It’s the paradigm that survives. (Kroc Camen)
Проверь себя! Онлайн тестирование | Мой блог
mutabor вне форума Ответить с цитированием
Старый 02.12.2009, 10:20   #26
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

это тоже не плохо...
кстати Делфи например перенос строки не важен.(хоть в одну строку пиши)
поэтому мне кажется лучше в цикле как один string пробегать...и не стирать части строки...а юзать тогда уж переменную целочисленную для запоминания текущей позиции
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 02.12.2009, 10:38   #27
mutabor
Телепат с дипломом
Старожил
 
Аватар для mutabor
 
Регистрация: 10.06.2007
Сообщений: 4,929
По умолчанию

Цитата:
это тоже не плохо...
Это бесполезно, если пользователь ожидает этой обработки и не может дальше работать.

Цитата:
кстати Делфи например перенос строки не важен.(хоть в одну строку пиши)
поэтому мне кажется лучше в цикле как один string пробегать...и не стирать части строки...а юзать тогда уж переменную целочисленную для запоминания текущей позиции
Это кому как. Мне удобнее работать с индексированным списком (TStrings), чем городить навигацию по одной большой строке. Пойду на это только если это действительно ускорит длительный процесс обработки.
The future is not a tablet with a 9" screen no more than the future was a 9" black & white screen in a box. It’s the paradigm that survives. (Kroc Camen)
Проверь себя! Онлайн тестирование | Мой блог
mutabor вне форума Ответить с цитированием
Старый 02.12.2009, 10:47   #28
Utkin
Старожил
 
Аватар для Utkin
 
Регистрация: 04.02.2009
Сообщений: 17,351
По умолчанию

Остальную часть времени, не зависящую от процесса получения строк я уже оптимизировал (ускорилось примерно на треть), мне бы быстрый способ чтения из компонента. Собственно не имеет особого значения Мемо это будет или не Мемо (просто в данном случае это Мемо).
Маньяк-самоучка
Utkin появился в результате деления на нуль.
Осторожно! Альтернативная логика
Utkin вне форума Ответить с цитированием
Старый 02.12.2009, 10:52   #29
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

поидее работа со StringList немного медленее изза вызова методов и проверок внутри них.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 02.12.2009, 11:16   #30
mutabor
Телепат с дипломом
Старожил
 
Аватар для mutabor
 
Регистрация: 10.06.2007
Сообщений: 4,929
По умолчанию

Цитата:
Остальную часть времени, не зависящую от процесса получения строк я уже оптимизировал (ускорилось примерно на треть), мне бы быстрый способ чтения из компонента
Ты на глаз, или замерял точно? Лучше замеряй, а то небольшую разницу на глаз не увидишь, тем более на небольших файлах.

ИМХО, из компонента (читай VCL класса) быстрее чем он может, читать не получится. Разве что прямо с диска читать на низком уровне, и самому разбирать данные. Не попробуешь - разницу не увидишь. Так как в любом случае файл в конечном итоге будет загружен в память целиком, то можно для удобства одним махом грузить его в TMemoryStream, а дальше все в твоих руках, как сделаешь - так быстро и будет.

Кстати про строки, ты в курсе что в Delphi используется хитрая модель, когда иногда копируются данные а иногда просто ссылка размножается на строку? От этого скорость будет напрямую зависеть.
Читать здесь: http://rsdn.ru/article/Delphi/Delphi_7_02.xml#E3HCI
The future is not a tablet with a 9" screen no more than the future was a 9" black & white screen in a box. It’s the paradigm that survives. (Kroc Camen)
Проверь себя! Онлайн тестирование | Мой блог

Последний раз редактировалось mutabor; 02.12.2009 в 11:23.
mutabor вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как быстро перемешать строки? zver777 Общие вопросы Delphi 5 23.08.2009 20:50
Как скопировать текст из мемо одной формы в мемо другой CraZZy RabbIt Общие вопросы Delphi 4 27.02.2009 00:01
Нужно найти папку быстро но как? zotox Помощь студентам 3 21.09.2008 13:35
Как быстро переверннуть(отразить) изображение? Paul Hindenburg Мультимедиа в Delphi 2 10.01.2008 12:51