Вверх ↑
Этот топик читают: Гость
Ответов: 16884
Рейтинг: 1239
#1: 2015-09-20 00:34:18 ЛС | профиль | цитата
normalpchar.rar


карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
файлы: 2normalpchar.rar [1.5KB] [450], normalpchar.gif [20KB] [760]
Разработчик
Ответов: 26113
Рейтинг: 2126
#2: 2015-09-20 01:59:37 ЛС | профиль | цитата
Посмотрю, когда время будет. Сейчас занят немного
карма: 22

0
Ответов: 2236
Рейтинг: 676
#3: 2015-09-21 15:49:00 ЛС | профиль | цитата
О чем вообще тема? Из названия не понятно и у первого поста файл пропал.
карма: 11

0
Ответов: 8915
Рейтинг: 823
#4: 2015-09-21 16:58:17 ЛС | профиль | цитата
sla8a, "Шо, опять?"
карма: 19

0
файлы: 1normalpchar2.rar [2.5KB] [341]
Ответов: 2236
Рейтинг: 676
#5: 2015-09-21 18:41:52 ЛС | профиль | цитата
Леонид,[flood]а зачем вы у Tad-a аттачи воруете? [/flood]
карма: 11

0
Ответов: 16884
Рейтинг: 1239
#6: 2015-09-22 00:10:41 ЛС | профиль | цитата
sla8a, Хотел отредактировать и выложить готовый компонент на эту тему и... сайт заклинил. Сейчас вызвал на редактирование - файлы появились.
почти про наш форум
- Циля, как Ваши дела?
- Ой, да полная жопа!
- И шо, кроме проблем с фигурой, ничего нового ?
------------ Дoбавленo в 00.01:
Теперь про
sla8a писал(а):
О чем вообще тема?
Об ускорении работы программ созданных в HiAsm.
Пример в первом топике о том, как ускорить обработку текста (строки).
Была взята задача
1. "Удаление лишних пробелов"
и
2. "Удаление лишних пробелов и непечатных символов"
из текста, исключив копирование строки из одного места в памяти в другое.
Готова заготовка компонента, решающая эту задачу : normalise.rar Это только заготовка !

Следующая задача : Мгновенный вывод текста в визуальные компоненты (например, в Memo). Мгновенный, а не загрузка 50 мб текста в течении 5 минут.
Раньше я решал эту проблему применением связки StrList + For + Memo, т.е. загружал текст в StrList, а в Memo выводил столько строк, сколько видно в окне Memo. Пользователь не сидит и не ждет результата по полчаса.
------------ Дoбавленo в 00.10:
Об этом всём, писалось в первом топике, но форум отказался все это схавать. Пришлось описательную часть удалить.
карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
1
файлы: 1normalise.rar [1.1KB] [350]
Голосовали:MAV
Ответов: 16884
Рейтинг: 1239
#7: 2015-09-24 07:09:59 ЛС | профиль | цитата
Значит не будем.
nesco, удали тему.
карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
Ответов: 4628
Рейтинг: 749
#8: 2015-09-24 10:35:04 ЛС | профиль | цитата
Tad, не забывай про это: code_36297.txt
карма: 26

2
файлы: 1code_36297.txt [2.1KB] [707]
Голосовали:MAV, Tad
Ответов: 1304
Рейтинг: 405
#9: 2015-09-24 11:29:07 ЛС | профиль | цитата
Tad, На данный момент в коде использую функцию DelSpace1 из strutils(FPC), далее в твоём примере добавил для посмотреть. Кстати про свойство NormSpace, зачем удалять пробелы в начале и конце строки?, нормализовать текст думаю нужно по одному правилу для любой части строки.
normalpchar_str.zip
карма: 3

0
файлы: 1normalpchar_str.zip [2KB] [335]
Ответов: 16884
Рейтинг: 1239
#10: 2015-09-24 13:36:27 ЛС | профиль | цитата
Netspirit писал(а):
не забывай про это
Ну, про это должен помнить тот, кто будет применять этот метод.
Tad писал(а):
исключив копирование строки из одного места в памяти в другое.
т.е. текст обрабатывается на том месте в памяти, куда он был помещён изначально.
1. MAV писал(а):
зачем удалять пробелы в начале и конце строки?, нормализовать текст думаю нужно по одному правилу для любой части строки.
Потому и удаляю, что считаю пробелы вначале и в конце строки её составляющими.
2. MAV писал(а):
далее в твоём примере добавил для посмотреть.
Для посмотреть - нужно добавлять ПЕРЕД моей IC потому, что после обработки в IC в тексте уже не осталось чего удалять, что и прекрасно продемонстрировал Netspirit.
карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
Ответов: 4628
Рейтинг: 749
#11: 2015-09-24 13:58:15 ЛС | профиль | цитата
Tad писал(а):
т.е. текст обрабатывается на том месте в памяти, куда он был помещён изначально
Это имеет смысл при работе с кодом. И то должно тщательно контролироваться. В HiAsm такое вроде не предусмотрено (пользователь подаст текст с какого-то компонента на обработку, затем в другом конце схемы возьмёт текст из того же компонента и получит бяку).
Не думаю, что быстродействие сильно уменьшится, если будет одно копирование на операцию (в штатном компоненте происходит множественное копирование). И кстати, у тебя после Trim() всёравно новая копия строки получается - поставь Trim перед Norm_Text и будет тебе счастье. Вроде ещё _hi_onEvent(onRes, PChar(Fstr) ) делает ещё один раз копию строки.

[offtop]PS: А KOL.Trim() можно сделать более эффективной, если переписать без использования TrimLeft и TrimRight.[/offtop]
карма: 26

0
Ответов: 16884
Рейтинг: 1239
#12: 2015-09-24 14:10:49 ЛС | профиль | цитата
Netspirit писал(а):
Это имеет смысл при работе с кодом.
Netspirit, смотреть можно с разных точек зрения.
Я загрузил текстовый файл в 1,5 ГБ. И куда будет копироваться результат, если у меня всего памяти 2ГБ ?
Срочно бежать в магазин за ещё парочкой линеек памяти ? Или отказаться от заказа ?
И когда "это имеет смысл" решать тому, кому нужны проблемы с нехваткой памяти или нет.
карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
Ответов: 4628
Рейтинг: 749
#13: 2015-09-24 14:17:10 ЛС | профиль | цитата
Ну, посчитай, сколько у тебя раз происходит копирование при считывании значения после загрузки и обработке в твоём коде - будешь знать сколько нужно памяти. Например, если в StrList и получится уместить такой объем, то сколько потребуется памяти, чтобы получить этот текст с точки StrList.Text?
карма: 26

0
Ответов: 16884
Рейтинг: 1239
#14: 2015-09-24 14:29:33 ЛС | профиль | цитата
Netspirit писал(а):
Ну, посчитай, сколько у тебя раз происходит копирование при считывании значения после загрузки и обработке в твоём коде
Если это про мою IC то ни разу.
карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
Ответов: 1304
Рейтинг: 405
#15: 2015-09-24 14:36:59 ЛС | профиль | цитата
Netspirit писал(а):
(пользователь подаст текст с какого-то компонента на обработку, затем в другом конце схемы возьмёт текст из того же компонента и получит бяку)
Netspirit, так можно сократить количество компонент в схеме да и копию данных не трудно сделать, главное есть возможность ускорить процесс обработки.
Tad писал(а):
Потому и удаляю, что считаю пробелы вначале и в конце строки её составляющими.
Tad, так и я вроде про это же говорю, есть несколько пробелов в начале строки значит надо оставить один пробел, то есть использовать один алгоритм как и для остальной части строки, иначе это метод будет называться NormSpace&Trim.
карма: 3

1
Голосовали:flint2
Сообщение
...
Прикрепленные файлы
(файлы не залиты)