![]() |
|
Модераторы: Poseidon, Snowy, bems, MetalFan |
![]()
|
|
| sabbatazh |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 24 Регистрация: 17.7.2008 Репутация: нет Всего: нет |
Здравствуйте, Все!!!!
Я зашел в тупик... Если есть возможность быстрого вывода инфы в МЕМО, то пожскажите плиз.... !!!!!!!!!!! Может использовать TFileStream?! Покажите пример как использовать механизм функции BlockRead в TFileStream.... Заранее Благодарю!!!! |
|||
|
||||
| aleksh |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 609 Регистрация: 8.7.2008 Репутация: 3 Всего: 13 |
основная проблема со скоростью, зачастую, связана с визуальным компонентом, в данном случае прорисовка в мемо, отсюда предложение: может данные выводить в мемо не сразу после прочтения; хранить их в какой-то временной структуре (вроде кэша будет), и выводить периодическу структуру. то есть: прочел раз пять-шесть-больше -- вывел в мемо, кэш очистил...
а считывать надо именно блоками? |
|||
|
||||
| sabbatazh |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 24 Регистрация: 17.7.2008 Репутация: нет Всего: нет |
ДА... вот именно шо тока блоками....
читаю через буфер (массив).... Это сообщение отредактировал(а) sabbatazh - 17.7.2008, 17:44 |
|||
|
||||
| dumb |
|
|||
![]() sceloglauxalbifacies ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2929 Регистрация: 16.6.2006 Репутация: 13 Всего: 158 |
попробуй воспользоваться советом, приведенным в конце этого поста.
|
|||
|
||||
| Jek1975 |
|
||||
|
Новичок Профиль Группа: Участник Сообщений: 8 Регистрация: 26.5.2008 Репутация: нет Всего: нет |
Кто-нибудь может объяснить почему первый вариант кода выполняется почти в 10 рез медленнее, чем второй вариант?
Что нужно сделать чтобы первый вариант выполнялся так же быстро?
|
||||
|
|||||
| Christoph |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 667 Регистрация: 23.1.2008 Где: Харьков Репутация: 1 Всего: 11 |
» without BeginUpdate/EndUpdate: 25 seconds... » with BeginUpdate/EndUpdate: 0.6 seconds! http://www.festra.com/eng/tip-beginupdate.htm в 1 примере никак не увеличишь скорость, ну можешь себе комп быстрее поставить во втором примере BeginUpdate EndUpdate смысловой нагрузки не несет, так как что с этими методами что без них (BeginUpdate EndUpdate), мемо перерисуется 1 раз Это сообщение отредактировал(а) Christoph - 1.3.2009, 18:28 -------------------- ![]() |
|||
|
||||
| Jek1975 |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 8 Регистрация: 26.5.2008 Репутация: нет Всего: нет |
Christoph
Если не заметно что BeginUpdate и EndUpdate у меня в коде ЕСТЬ, то запусти пример из вложения, и убедись, что не в них дело. Присоединённый файл ( Кол-во скачиваний: 6 )
Proj_Lines.zip 3,63 Kb |
|||
|
||||
| Christoph |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 667 Регистрация: 23.1.2008 Где: Харьков Репутация: 1 Всего: 11 |
вот убери в 1 коде BeginUpdate и посмотри сколько будет выполняться, и во втором убери BeginUpdate, если во втором разницы не почувствуешь, а вот в первом почуствуешь
-------------------- ![]() |
|||
|
||||
| Jek1975 |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 8 Регистрация: 26.5.2008 Репутация: нет Всего: нет |
Christoph, извини, чувак, у меня конечно есть некоторый запас терпения, но я НЕ спрашиваю как замедлить код, я спрашиваю, что нужно сделать, чтобы оба куска выполнялись одинаково быстро. Если не знаешь, то лучше, пожалуйста, не отвечай.
Последний раз показываю что BeginUpdate и EndUpdate в моем примере НИКАК не способствуют тому, чтобы время выполнения обоих кусков сравнялось!!! Memo [сек] StringList+Memo [сек] с Updates 10,910 1,284 без Updates 58,990 1,346 |
|||
|
||||
| MetalFan |
|
|||
![]() Аццкий Сотона ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3815 Регистрация: 2.10.2006 Где: Moscow Репутация: 62 Всего: 128 |
Jek1975, так, спокойнее! чувак, не гни пальцы, а то сломаешь.
по теме: при LoadFromXXX BeginUpdate/EndUpdate вызывать нет необходимости, ибо они и так вызываются в TStirngs.LoadFromStream. для ускорения загрузки в Мемо имеет смысл не добавлять по одной строчке, а грузить их "скопом" из потока. -------------------- There are always someone smarter than you... |
|||
|
||||
| Jek1975 |
|
||||
|
Новичок Профиль Группа: Участник Сообщений: 8 Регистрация: 26.5.2008 Репутация: нет Всего: нет |
MetalFan, получется что не существует никаких других способов ускорения, кроме LoadFrom...?
Тогда как это реализовать в программе наиболее правильным способом? Если я правильно понял, то в своем объекте, из которого я могу получить список строк (которые можно создать только в цикле) нужно делать не так:
а так:
И вызывать не, MyDataStorage.GetText (Memo1.Lines) ,а Memo1.Lines.LoadFromStream (MyDataStorage.GetText); Я Вас правильно понял? Извините, если понял что-то не так ...я только использовал готовые потоки (файлы), свои не создавал. Поэтому и спрашиваю насчёт правильности их использования. Это сообщение отредактировал(а) Jek1975 - 1.3.2009, 20:39 |
||||
|
|||||
| MetalFan |
|
|||
![]() Аццкий Сотона ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3815 Регистрация: 2.10.2006 Где: Moscow Репутация: 62 Всего: 128 |
на самом деле можно провести эксперимент...
нет, я был не прав. судя по коду TStrings(TMemoStrings) что загрузка из TStream, что из другого TStrings один фиг в итоге вызывает TStrings.Insert для КАЖДОЙ строки. следует заметить, что и Assign и LoadFromStream делают сами внутри себя BeginUpdate/EndUpdate. а что, если попробовать загрузить текст в мемо через TMemo.Lines.Text := ... или TControl.SetTextBuf... Это сообщение отредактировал(а) MetalFan - 1.3.2009, 21:11 -------------------- There are always someone smarter than you... |
|||
|
||||
![]()
|
| Правила форума "Delphi: Общие вопросы" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Delphi: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |