Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Две версии Функции. что выбрать?


Страницы:   1 2 3 4

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. Нету там их.


Страницы:   1 2 3 4

Наверх

Титульная страница Поиск, карта сайта Написать письмо