Блокнот Графомана

Планы, идеология, архитектура и т.п.

Модератор: Модераторы

Re: Блокнот Графомана

Сообщение Лекс Айрин » 05.08.2016 20:11:15

zub, для особо талантливых, повторяю. НЕТ у меня возможности убрать гигантскую строку -- она данность компонента. И работать с ней приходится методами компонента. И любые методы оптимизации должны учитывать данный факт. Или у тебя есть какой-нибудь FastMemo? А преобразования туда-сюда только из-за модных тенденций (даже ускоряющих работу) это путь ведущий к еще большим тормозам. Я не могу даже напрямую вставить, в процессе преобразования, символы конца строки, так как они просто тупо игнорируются.
А вариант работы с memo напрямую, кстати, (как предлагается) грозит еще бОльшими тормозами, так как текст пересчитывается после каждого измененного символа. И еще надо как-то его отображать Ах да... в контексте данной работы мне нет необходимости работать с плавающими длинами символов -- я ищу всего-лишь символы '<' и ">" и несколькими обрывками тегов, для проверки необходимости разбивания строки на несколько. Это сделано сознательно.

ЗЫ: пока прихожу к мнению, что надо экспортировать текст из Memo в текстовый буфер и просто построчно (или по мере исчерпания буфера) скидывать его обратно.
Аватара пользователя
Лекс Айрин
долгожитель
 
Сообщения: 3930
Зарегистрирован: 19.02.2013 16:54:51

Re: Блокнот Графомана

Сообщение zub » 06.08.2016 04:16:43

>> НЕТ у меня возможности убрать гигантскую строку
Тебя никто не просит ее убирать.
>>она данность компонента
Я надеюсь ты понимаешь что только "компонента", а физически например у виндового мемо\едита нету никакой паскалевской строки, темболее в utf8
>>И работать с ней приходится методами компонента.
>>А вариант работы с memo напрямую, кстати, (как предлагается) грозит еще бОльшими тормозами, так как текст пересчитывается после каждого измененного символа.
Дак ты работаешь методами тмемо или нет? Насколько я понимаю больших тормозов чем у тебя сейчас быть не может))

>>А преобразования туда-сюда только из-за модных тенденций
Модные тенденции наблюдаются у тебя - работаешь какимито методами какогото компонента... ты внутрь их заглядывал хоть?
"Работая методами компонента" ты постоянно гоняешь мегабайты туда-сюда паралельно кодируя и перекодируя.
Ты задался вопросом - почему тормозит. я предположил почему и предлагаю сделать постаринке - просто и быстро.
В ответ - вобщемто не тормозит уже, по другому небывает\неумею.
zub
долгожитель
 
Сообщения: 2137
Зарегистрирован: 14.11.2005 23:51:26

Re: Блокнот Графомана

Сообщение Лекс Айрин » 06.08.2016 09:34:47

zub писал(а):Дак ты работаешь методами тмемо или нет? Насколько я понимаю больших тормозов чем у тебя сейчас быть не может))


может. И даже уже были, но от них избавиться было как раз таки легко.

zub писал(а):Дак ты работаешь методами тмемо или нет?


Пока я построчно изымаю строки, обрабатываю их и кладу обратно. И как раз таки обработка строки происходит быстро... в общем, как я понял, ты просто рекламируешь свой код, поэтому придется разбираться самому.

zub писал(а): ты внутрь их заглядывал хоть?

заглядывал... без бутылки, а лучше двух, лучше туда не лезть.

zub писал(а):"Работая методами компонента" ты постоянно гоняешь мегабайты туда-сюда паралельно кодируя и перекодируя.

нету там перекодировок. За исключением сохранения/загрузки данных в файл.
zub писал(а):я предположил почему и предлагаю сделать по старинке - просто и быстро.

то есть, тупо преобразовав в бинарный формат, а потом обратно? накуа? Я работаю в одной кодировке ПОБАЙТОВО, а потом скидываю результат построчно. Если я переделаю как хочется тебе (с учетом, что тормозит работа со строками в целом, а не с каждой конкретной строкой, это я проверил, по старинке, кстати), то результат явно не изменится. Первое правило оптимизации -- сначала разберись какой код тормозит.

ЗЫ: кстати, у меня возникло подозрение где проблема... и она, если все верно, совсем в другом месте.
Аватара пользователя
Лекс Айрин
долгожитель
 
Сообщения: 3930
Зарегистрирован: 19.02.2013 16:54:51

Re: Блокнот Графомана

Сообщение zub » 06.08.2016 12:53:12

И как раз таки обработка строки происходит быстро... в общем, как я понял, ты просто рекламируешь свой код, поэтому придется разбираться самому.

Бог с тобой, я такими вещами никогда не занимался и не планирую. Рекламировать мне нечего))
Внутрь тмемо я заглядывал во времена 0.9 - при чтении строчки из него копировалось всё содержимое, перекодировалось, выбиралсь и возвращалась нужная строка. тоже самое в обратном порядке при изменении строки.
Но если ты говоришь что сейчас это стало работать быстро - значит работа со строками в тмемо переписана, лишнее туда-сюда не гоняется. И тормозит твой код((
нету там перекодировок. За исключением сохранения/загрузки данных в файл.

Это чудо какоето - винда научилась отображать утф8 без перекодирования?
то есть, тупо преобразовав в бинарный формат, а потом обратно? накуа? Я работаю в одной кодировке ПОБАЙТОВО, а потом скидываю результат построчно. Если я переделаю как хочется тебе (с учетом, что тормозит работа со строками в целом, а не с каждой конкретной строкой, это я проверил, по старинке, кстати), то результат явно не изменится. Первое правило оптимизации -- сначала разберись какой код тормозит.

Мне хочется... Мне пофиг)) 99% тормозит у тебя какойнить s:=s+ss[i] в цикле. Думаешь нет?
Почему ты досихпор не нашел что тормозит и не выложил сюда?

у меня возникло подозрение

Ты еще на битву экстрасенсов обратись, там подозрение усилят или ослабят

(с учетом, что тормозит работа со строками в целом, а не с каждой конкретной строкой, это я проверил, по старинке, кстати)

Ну ты загнул... У FPC есть конечно проблемы со строками, но это не твой случай. Касательно топика строки работают максимально быстро и вцелом и поотдельности)), просто ктото неумеет-непонимает-незнает но делает как удобно ему несмотря ниначто
zub
долгожитель
 
Сообщения: 2137
Зарегистрирован: 14.11.2005 23:51:26

Re: Блокнот Графомана

Сообщение Лекс Айрин » 06.08.2016 13:40:09

zub писал(а):Внутрь тмемо я заглядывал во времена 0.9 - при чтении строчки из него копировалось всё содержимое, перекодировалось, выбиралсь и возвращалась нужная строка. тоже самое в обратном порядке при изменении строки.

тут я просто беру строку и возвращаю обработанную. вся работа в одной кодировке и смущает именно зависимость от размера текста в мемо. Как будто сам текст куда-то копируется полностью, а потом записывается обратно. Попытаюсь скопировать текст в TStringList и заполнить memo заново, уже измененным текстом. По идее, конечно, надо работать через поток, но тут я полный ламер.

zub писал(а):99% тормозит у тебя какойнить s:=s+ss[i] в цикле. Думаешь нет?


я не думаю. Я проверяю. И потом, в этой ситуации не подтормаживала бы работа по вставке тегов -- там код как раз таки простой и без хитро вложенных циклов и присваиваний. А ведь он тоже подтормаживает заметно, но не так сильно (если что, то "заметно" это 30 и более процентов).

zub писал(а):Почему ты досихпор не нашел что тормозит и не выложил сюда?


Хотя бы потому, что для проверки некоторых вариантов требуется серьезно переделывать код, а я не только программированием занят((( Плюс, я все же пытаюсь тестовыми закладками обнаружить тормозное место.
zub писал(а): там подозрение усилят или ослабят


зачем. То, что я думал, не исправило ситуацию. Тут как раз проверить легко было.

zub писал(а):У FPC есть конечно проблемы со строками, но это не твой случай.


Боюсь, дело в том, что сам компонент работает через буфер, который подтормаживает.
Аватара пользователя
Лекс Айрин
долгожитель
 
Сообщения: 3930
Зарегистрирован: 19.02.2013 16:54:51

Re: Блокнот Графомана

Сообщение zub » 06.08.2016 13:55:07

Код и рецепт воспроизведения тормозов в студию.
Похмел+нечего делать))
zub
долгожитель
 
Сообщения: 2137
Зарегистрирован: 14.11.2005 23:51:26

Re: Блокнот Графомана

Сообщение Лекс Айрин » 06.08.2016 15:01:07

В общем, я разобрался. Это тормозит именно компонент из-за большого размера загруженных в него данных.

Если скопировать текст в TStringList, и он имеет более-менее нормальные размеры (где он вытягивается в одну строку), то после достаточно долгой загрузки в нее, что характерно, текст преобразуется мгновенно..., правда, при этом нарушается разметка, но это уже мелочи.

Придется или терпеть, или сбрасывать на диск, преобразовывать низкоувневыми командами каждую строчку и загружать обратно в мемо.
Аватара пользователя
Лекс Айрин
долгожитель
 
Сообщения: 3930
Зарегистрирован: 19.02.2013 16:54:51

Re: Блокнот Графомана

Сообщение zub » 06.08.2016 15:24:12

В общем, я разобрался. Это тормозит именно компонент из-за большого размера загруженных в него данных.

Вот же люди. тормозит всё вокруг, но не у них. Несколько постов назад всё вроде ок было с компонентом((
Не подскажешь почему в других программах не тормозит? наверно потому что не на паскале написаны))
zub
долгожитель
 
Сообщения: 2137
Зарегистрирован: 14.11.2005 23:51:26

Re: Блокнот Графомана

Сообщение Лекс Айрин » 06.08.2016 15:47:01

zub, потому что нефиг загружать туда файлы по метру и более. (тестовый файл был 2,5 Мб ) Особенно на слабом компе с малым количеством оперативки. Тут явно свопится на диск, что само по себе не ускоряет прогу.
И я не говорил, что с компонентом все хорошо. Я говорил, что в своем коде я уверен. Теперь, зная в чем проблема, ее легче решить или обойти.
Аватара пользователя
Лекс Айрин
долгожитель
 
Сообщения: 3930
Зарегистрирован: 19.02.2013 16:54:51

Re: Блокнот Графомана

Сообщение zub » 06.08.2016 16:29:38

Лекс Айрин, ты чтото делаешь нетак.
Ну не должно быть так чтобы вставка какогото тега в открытый 2хмеговый файл происходила с существенной задержкой на I7 c 16 гигами озу. при этом успевая раскрутить вентилятор. Да, мемо вносит свой вклад в падение производительности, но не до такойже степени.

zub, потому что нефиг загружать туда файлы по метру и более

Это первое что должно быть сделано при тестировании. Чтоб не сесть в лужу в ответственный момент - стресстесты обязательны, или нефиг вообще такую программу запускать - вдруг чтото сделаешь нетак - всё повиснет, раскрутится и перегреется))

Да еще программа тормозит до повисания при копировании большого текста в клипборд. Давай и это запретим))
zub
долгожитель
 
Сообщения: 2137
Зарегистрирован: 14.11.2005 23:51:26

Re: Блокнот Графомана

Сообщение Лекс Айрин » 06.08.2016 17:16:44

zub писал(а):Ну не должно быть так чтобы вставка какогото тега в открытый 2хмеговый файл происходила с существенной задержкой на I7 c 16 гигами озу.


Если это у тебя слабый комп... Думаю, на таком компе проблемы начнутся позже. И не вставка тега, а вставка/удаление тегов То есть перетряхивается весь текст.

zub писал(а):Это первое что должно быть сделано при тестировании.


Второе. Сначала прогу надо написать. Вообще-то она еще толком не дописана. Печать придется переделать, так как я не стал пока выправлять огрехи создаваемые мемо -- по хорошему, надо создавать буфер преобразования и выдавать на печать постранично... заодно, исправить диалог замены, вот теперь вылезли тормоза конвертера... в общем, для тестирования прога явно не готова. Ах да, к тому же, при конвертации портится разметка, то есть придется как-то это исправлять.
По хорошему, надо бы создать буфер и подгружать текст при необходимости, но не исключены ситуации когда текст сразу листают на середину/конец. А это сразу же тормоза.
Аватара пользователя
Лекс Айрин
долгожитель
 
Сообщения: 3930
Зарегистрирован: 19.02.2013 16:54:51

Re: Блокнот Графомана

Сообщение zub » 06.08.2016 18:27:45

>>в общем, для тестирования прога явно не готова.
не, не... погодь))
По ссылке из первого поста при компиляции всем транковым - вылет на старте. после показа диалога про чтототам загрузить в процедуре обработки таймера идет попытка обращения к еще несозданому интерфейсу. Незнаю уж выложена кривая версия или такая жесть прокатывает в лазаре который ты пользуешь.

Ты серьезно думаешь писать чтото серьезное не используя отладку?
zub
долгожитель
 
Сообщения: 2137
Зарегистрирован: 14.11.2005 23:51:26

Re: Блокнот Графомана

Сообщение Лекс Айрин » 06.08.2016 18:57:01

zub, вообще-то я ей уже пользуюсь. И вылетов нет)))

Лазарус у меня транковый, а вот паскаль нет (3.0.0) -- почему-то у меня вылетает Лазарь при сборке под транковым компилятором

А что именно говорит? И какую версию конкретно собираешь?

А отладку я, конечно, использую. Но не отладчик.

Добавлено спустя 14 минут 26 секунд:
В любом случае, есть уже скомпилированный виндовый вариант. Под линуксом, если что, его проще "напоить". У меня просто нет никсовой тачки, поэтому я даже не смогу проверить там работоспособность.

вот моя процедура таймера, так сказать, транковая.
Код: Выделить всё
procedure TFMain.Timer1Timer(Sender: TObject);

Var
pos_:integer;
Str:String;

begin
     FMain.MemoBuff.Clear;
     FMain.MemoBuff.PasteFromClipboard;
     FMain.TimeView.Caption:=TimeToStr(Time);
     FMain.DateView.Caption:=DataCompile;
     FExtBuff.Memo1.Clear;
     FExtBuff.Memo1.PasteFromClipboard;//синхронизация с буфером обмена.
  //проверяется равенство буфера содержимого мемо и первого элемента списка
  //если не равен, то мемо копируется в список как его первый элемент.
  if  FExtBuff.ListBuff.Items[0]=FExtBuff.Memo1.Lines.Text then
     Begin end else
     begin
          FExtBuff.ListBuff.Items.Insert(0,FExtBuff.Memo1.Lines.Text);
     end;
   { //это код добавленный после публикации, да и не знаю стоит ли его оставлять.
PosX.Caption:= IntToStr(Editors.CaretPos.x+1);// странно видеть позицию 0
     PosY.Caption:= IntToStr(Editors.CaretPos.y+1);// странно видеть строку 0
}
     Begin  End;
     //
end;
Аватара пользователя
Лекс Айрин
долгожитель
 
Сообщения: 3930
Зарегистрирован: 19.02.2013 16:54:51

Re: Блокнот Графомана

Сообщение zub » 06.08.2016 20:06:51

А отладку я, конечно, использую. Но не отладчик.

Интересно, что можно отладить с вырезаной отладочной информацией))

вот моя процедура таймера, так сказать, транковая.

ох по рукам надо за такое))

А что именно говорит? И какую версию конкретно собираешь?

Я же написал. создание интерфейса прервано модальным диалогом грузить какуюто фигню или не грузить, а в процедуре таймера идет обращение к не созданым элементам интерфейса. Версий отличных от ссылки в первом посте не искал))
zub
долгожитель
 
Сообщения: 2137
Зарегистрирован: 14.11.2005 23:51:26

Re: Блокнот Графомана

Сообщение Лекс Айрин » 08.08.2016 09:22:42

zub писал(а):что можно отладить с вырезаной отладочной информацией))


да много чего... гораздо больше, чем с полурабочим отладчиком.

zub писал(а):ох по рукам надо за такое))



работает... и пока не возникало проблем.

zub писал(а): создание интерфейса прервано модальным диалогом грузить какуюто фигню или не грузить, а в процедуре таймера идет обращение к не созданым элементам интерфейса.


у меня там много что грузится... дерево заметок, файл кинутый на иконку... файл с предыдущей сессии... не зная где глюк поправить сложно... подозреваю, что речь идет о крайнем.
Аватара пользователя
Лекс Айрин
долгожитель
 
Сообщения: 3930
Зарегистрирован: 19.02.2013 16:54:51

Пред.След.

Вернуться в Разработки на нашем сайте

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1

Рейтинг@Mail.ru