![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Две версии Функции. что выбрать?
Pcrepair © (2012-12-06 23:33:00)Добрый день. Есть два варианта функции (удаляет теги и текст между тегами)
Вариант1
function DelJS(const Code:string):string;
var
Buffer:string;
StartTeg:integer;
EndTeg:integer;
i:integer;
begin
Buffer:=Code;
repeat
try
StartTeg:=Pos('<script', Buffer);
EndTeg:=Pos('</script>', Buffer);
Delete(Buffer, StartTeg, EndTeg-StartTeg+9);
i:=Pos('<script', Buffer);
except
break
end;
until i = 0;
Result:=Buffer;
end;
Вариант2
function DelJS(const Code:string):string;
var
EndTeg:string;
Buffer:string;
index1:integer;
index2:integer;
i:integer;
begin
EndTeg:='</script>';
Buffer:=Code;
index1:=Pos('<script', Buffer);
while (index1 <> 0) do
begin
index2 := index1;
i := 1;
while i <> 10 do
begin
try
Inc(index2);
if Buffer[index2] = EndTeg[i] then
Inc(i)
else
i := 1;
except
break
end;
end;
Delete(Buffer, index1, index2 - index1 + 1);
index1 := Pos('<script', Buffer);
end;
Result := Buffer;
end;
Оба варианта работают в общем одинаково, удаляют что назначено, грузят проц на большом файле и все такое
ВНИМАНИЕ!!! Вопросы:
1. какой вариант более соотвествует классическому стилю программирования, более правильный?
2. может есть недостатки? кто знает, напишите, пожалуйста
Медвежонок Пятачок (2012-12-08 19:05:00) [21]Я о том, что не надо прикидываться дятлом.
Разговор был про xtml страницу.
Pcrepair (2012-12-08 19:02:00) [22]
> ну не хочешь - не надо.
ты это о чем?
толян, ну чего ты опять не в свои дела лезешь? тебе же вредно волноваться
Медвежонок Пятачок (2012-12-08 19:00:00) [23]ну не хочешь - не надо.
Anatoly Podgoretsky (2012-12-08 18:59:00) [24]
> лучше приведи нормальный пример своей версии, с указанием
> используемых унитов и тд. чтоб можно было откомпилировать
> и посмотреть
Типовая разводка на слабо
Pcrepair (2012-12-08 18:57:00) [25]
> Ты ссылку-то дашь или нет?
ссылку на что? на страницу? так ведь уже сказано:
моя страница(точнее любая из триллиона страниц интернета)
выбери любую, можно прям эту, на которой все это пишем, вот и адрес:
http://www.delphimaster.ru/cgi-bin/forum.pl?id=1354822431&n=0
DVM (2012-12-08 18:47:00) [26]
> Медвежонок Пятачок © (08.12.12 18:38) [52]
> Расширяй кругозор, оно пригодится.
>
> Деточка, мой кругозор тебе знаешь куда не влезет?
Неприятно? Про потрындеть и пр. не я начал. Я лишь твой стиль общения принял.
Обидеть не хотел, извини.
Медвежонок Пятачок (2012-12-08 18:47:00) [27]Ты ссылку-то дашь или нет?
Pcrepair (2012-12-08 18:46:00) [28]
> а про то, грузится ли она вообще в дом.
вообще наверно грузится. но не в моей программе. там нет ни DOM, ни BOM ни чего еще
но образцово-показательный пример кода давай, посмотрим, измерим, сравним
Медвежонок Пятачок (2012-12-08 18:38:00) [29]Расширяй кругозор, оно пригодится.
Деточка, мой кругозор тебе знаешь куда не влезет?
Если задача должна решаться не на вин, то я ее не буду в твоем любимом рад делать.
Иди в ванную, пооптимизируй что - нибудь.
DVM (2012-12-08 18:34:00) [30]
> Медвежонок Пятачок © (08.12.12 17:27) [44]
> а COM объект-монстр, тянущий за собой библиотек
>
> Ой ну йо мае.
> Браузер-то что по вашему с дом страницей делает?
> Не то же самое, и не через то же самое?
> Лишь бы потрендеть.
Потрындеть бы лишь тебе, тысячу раз уже говорил. Если ты не видишь разницы между приложением перелопачивающим тысячи страниц и браузером страницу в котором пользователь открыл и пялится в нее. Если все твои программы такие - то флаг тебе в руки пользуй свои msxml и прочие монстроуозные либы везде где только можно, я же не буду стрелять из пушки по воробьям, там где это недопустимо. Извини, но мне зачастую кажется, что стремление к использованию чужого монструозного, но заведомо рабочего и "безупречного" - это от собственного неумения реализовать простейший алгоритм и лени. Как ты не можешь понять, что нельзя везде пихать COM, XML только из-за того, чтобы было крута и просто в реализации.
Есть другие платформы, наконец, отличные от Win. Расширяй кругозор, оно пригодится.
> Тривиальная задача решается уже второй день, куча кода,
> для которого потребуется еще куча другого кода.
> Для меня это дико и ненормально. А для вас?
>
>
У нас подобные задачи могут решаться и за 10 минут и за несколько дней или даже недель, все зависит от постановки задачи. Если стоит задача распарсить одну страницу раз в час, то сойдет и msxml, если стоит задача, заменять/выделять теги на скоростях в 10 Гбит, то приходится несколько дней искать места, где бы выиграть 5-10% загрузки CPU или ускорить и без того уже вылизанный код на те же 10%. Потому что поток в 10 Гбит/c и терабайты данных это не тот случай, где надо понтоваться с новомодными парсерами и технологиями.
Медвежонок Пятачок (2012-12-08 18:25:00) [31]я не про то, грузишь ли ты свою страницу в дом.
а про то, грузится ли она вообще в дом.
если да, то будет тебе пример образцово-показательного кода.
в коробочном варианте.
потом внукам подаришь.
итак: ссылка на страницу есть?
Pcrepair (2012-12-08 18:22:00) [32]моя страница(точнее любая из триллиона страниц интернета) в дом не грузится
страница так сказать парсится. из нее вынимаются тексты предназначенные для людей и анализируются на предмет соответствия критерию.
но полный пример приведи, просто интересно будет посмотреть что это
Медвежонок Пятачок (2012-12-08 18:02:00) [33]Ты скажи, грузится твоя страница в дом или нет?
Если грузится, то задача решается минимальным объемом кода ([39]).
Причем этот код в сто раз более прозрачен и в тыщщу раз более легко модифицируем. (а это в миллион раз важнее абстрактной оптимизации которая как раз таки в тривиальной задаче никому реально не нужна).
Если ты разработчик, то от тебя в первую очередь ждут быстрого решения задачи. И способности быстро перестроить уже реализованное решение под меняющиеся условия. А меняются они в реальной жизни очень часто.
Pcrepair (2012-12-08 17:55:00) [34]медвежонок, ну не надо так нервничать
это все просто изучение ДЕЛФИ, пока в рамках процедурного программирования
сообрази сам, можно ли заморачиваться на ООП не изучив процедурное?
сам то небось лет пять говнокод писал, пока не научился?
лучше приведи нормальный пример своей версии, с указанием используемых унитов и тд. чтоб можно было откомпилировать и посмотреть
Медвежонок Пятачок (2012-12-08 17:38:00) [35]Его функция из [25] много быстрее будет, сдается мне, и к памяти нетребовательна.
Теперь сравни время потраченное на ее написание, время на ее сопровождение, время, которое он выиграет по сравнению с тем, если будет с домом работать через дом (как и делают вменяемые люди).
Потом посмотри на мой код и сделай то же самое.
Потом прикинь, трудозатраты на его сопровождение с трудозатратами сопровождения начального примера.
Медвежонок Пятачок (2012-12-08 17:30:00) [36]для тривиальной задачи - это нормально?
Уже спрашивали. Много раз.
Много раз отвечал, но видимо не доходит. Отвечаю еще раз:
Это нормально. Проверено годами и ежедневным использованием.
А у меня вот встречный вопрос:
Тривиальная задача решается уже второй день, куча кода, для которого потребуется еще куча другого кода.
Для меня это дико и ненормально. А для вас?
Медвежонок Пятачок (2012-12-08 17:27:00) [37]а COM объект-монстр, тянущий за собой библиотек
Ой ну йо мае.
Браузер-то что по вашему с дом страницей делает?
Не то же самое, и не через то же самое?
Лишь бы потрендеть.
Pcrepair (2012-12-08 16:48:00) [38]sniknik
> по пункту 2. открой прямо вот эту страницу в исходном коде
> и вырежи ну хотя бы первые 3 блока тегов по своему "алгоритму".
>
открыл, и че?
все блоки со скриптами удалены
DVM (2012-12-08 15:43:00) [39]
> Pcrepair © (08.12.12 01:18) [35]
> использование РегЕксп от ХЕ3 уменьшит загрузку проца?
в [25] у тебя вполне приличный в плане скорости код (на первый взгляд) и он точно будет быстрее RegExp. Загрузка процессора она прямо пропорциональна скорости работы. Не хочешь грузить - вставляй хотя бы sleep, разноси по разным потокам и т.д.
DVM (2012-12-08 15:37:00) [40]Опять же, если речь идет о Windows это одно, но вот у меня, например, половина кода работает под Linux и где там все эти расчудесные либы от MS. Нету там их.