![]() |
|
Модераторы: Poseidon, Snowy, bems, MetalFan |
![]()
|
|
| maxim1000 |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 3334 Регистрация: 11.1.2003 Где: Киев Репутация: 4 Всего: 110 |
ого... как минимум удивительно... только вопросик один: в первом варианте используется множество из 11 (если не обсчитался) символов во втором - из... (не... тут уж точно обсчитаюсь) кучи символов порядок времени и там, и там, ИМХО, будет n*m n - длина обрабатываемой строки m - длина множества всякими приемчиками (например, за счет дополнительной памяти), его можно свести к n, но этот случай пока не рассматриваем так что у нас n*m тогда для хорошего теста желательно, чтобы все - и строка, и множество были одинаковыми вообще тут рассчеты получаются такие: a - время работы варианта на StringReplace: a=m*(b*n+c) b - время на обработку одного символа (включая всякие счетчики цикла, доставание и сохранение символов в памяти) c - время на организационные действия (копирование строк, работа с параметрами в начале и в конце функции) d - время работы варианта на множествах: d=c+n*(b*m+e) e - время на сохранение и доставание множества их памяти, скорее всего все сводится к тому, что оно просто хранится где-то в в каокй-нибудь регистр заносится указатель на него... по идее оно должно быть и в варианте StringReplace - иначе придется при каждом изменении множества идти и править код - это ужас... так что можно даже так написать: a=m*(b*n+c)+e вот и получается: вариант с StringReplace: m*b*n+m*c+e вариант с множествами: n*b*m+n*e+c т.е. вся разница кроется в (m*c+e)<>(n*e+c) или (m-1)*c <> (n-1)*e какое больше, тот вариант и длиннее так что при маленьких m и больших n вполне может оказаться, что лучше вариант с StringReplace... Добавлено @ 17:53 так что с минусом не спеши -------------------- qqq |
|||
|
||||
| h2o |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 199 Регистрация: 19.8.2005 Репутация: 1 Всего: 1 |
Всё понятно! ну вот я вот так сделал:
всё панятно, и дпже чуть больше... спасибо всем! --------------------
Я нифига не знаю! мало что понимаю! Помогите тупому... У меня стоит D7! |
|||
|
||||
![]()
|
| Правила форума "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. |