скорость FR3 vs. FR 2.52

Евгений ПришкоЕвгений Пришко Украина, Харьков
отредактировано 02:06 Раздел: FastReport 3.0
приветствую
хотел бы узнать насколько изменилась скорость работы фастрепорта
сейчас самый сумасшедший отчет на fr 2.52 работает 10-12 часов
обработка идет на p4 2 с хвостом с HT
результатом работы является 175-200 страниц сводных таблиц за год
используется кросс + группировка + уйма скриптов
прогнозы уменьшения времени?

Комментарии

  • отредактировано 02:06
    Кросс стал работать быстрее; на сколько, не скажу - надо тестировать. По прикидкам, раза в два. Скрипт стал работать сильно быстрее, раз в 10 как минимум (имеется в виду вычислительная мощность; реальная скорость работы зависит от того, чем занимается скрипт).
  • отредактировано 02:06
    Сумасшедший отчет конечно же 10 часов занимается исключительно скриптами. Движки баз данных совсем не причем... ;)
  • Евгений ПришкоЕвгений Пришко Украина, Харьков
    отредактировано September 2004
    это скрипт мемки на футере (подводит итоги по столбцам и выводит результат группировки)
    begin
      colnum := [Column#];
      memo := '';
      if [colnum] <= 4 then
      begin
        if [colnum] = 1 then
        begin
         if [tag] = 0 then begin memo := 'Итого'; Alignment := 8; end;
         if [tag] = 1 then begin memo := [GetParentName(3,3)]; Alignment := 8; end;
         if [tag] = 2 then begin memo := [GetParentName(3,6)]; Alignment := 8; end;
         if [tag] = 3 then begin memo := [GetParentName(3,9)]; Alignment := 8; end;
         if [tag] = 4 then begin memo := [GetParentName(3,12)]; Alignment := 8; end;
          if [tag] = 5 then begin memo := [setRResult."TITUL_ZCODE"]; Alignment := 8; end;
          if [tag] > 5 then begin memo := [setRResult."TITUL_ZCODE"]; Alignment := 8; end;
        end
        else
        if [colnum] = 2 then
        begin
         if ([tag] > 0) and ([tag] <= 5) then begin memo := 'Итого'; Alignment := 8; end;
         if [tag] = 6 then begin memo := [GetParentName(4,3)]; Alignment := 8; end;
         if [tag] = 7 then begin memo := [GetParentName(4,6)]; Alignment := 8; end;
         if [tag] = 8 then begin memo := [GetParentName(4,9)]; Alignment := 8; end;
          if [tag] > 8 then begin memo := [setRResult."OBJECT_S"]; Alignment := 8; end;
        end
        else
        if [colnum] = 3 then
        begin
         if ([tag] > 5) and ([tag] <= 8) then begin memo := 'Итого'; Alignment := 8; end;
         if [tag] = 9 then begin memo := [GetParentName(2,3)]; Alignment := 8; end;
         if [tag] = 10 then begin memo := [GetParentName(2,6)]; Alignment := 8; end;
         if [tag] = 11 then begin memo := [GetParentName(2,9)]; Alignment := 8; end;
         if [tag] = 12 then begin memo := [GetParentName(2,12)]; Alignment := 8; end;
        end
        else
        if [colnum] = 4 then
        begin
         if ([tag] > 8) and ([tag] <= 12) then begin memo := 'Итого'; Alignment := 8; end;
        end;
      end;
      if [colnum] > 3 then
      begin
        Alignment := 9;
        if [colnum] = 4 then begin Footer := SUM([setRResult."calc_mark4"], Masterband); memo := '[Footer #N#,0,00]'; end;
        if [colnum] = 5 then begin Footer := SUM([setRResult."calc_mark5"], Masterband); memo := '[Footer #N#,0,00]'; end;
        if [colnum] = 6 then begin Footer := SUM([setRResult."calc_mark6"], Masterband); memo := '[Footer #N#,0,00]'; end;
        if [colnum] = 7 then begin Footer := SUM([setRResult."calc_mark7"], Masterband); memo := '[Footer #N#,0,00]'; end;
        if [colnum] = 8 then begin Footer := SUM([setRResult."calc_mark8"], Masterband); memo := '[Footer #N#,0,00]'; end;
        if [colnum] = 9 then begin Footer := SUM([setRResult."calc_mark9"], Masterband); memo := '[Footer #N#,0,00]'; end;
        if [colnum] = 10 then begin Footer := SUM([setRResult."calc_mark10"], Masterband); memo := '[Footer #N#,0,00]'; end;
        if [colnum] = 11 then begin Footer := SUM([setRResult."calc_mark11"], Masterband); memo := '[Footer #N#,0,00]'; end;
      end;
    end
    

    это из мемки на хедере - выводит заголовок группы
    begin
      colnum := [Column#];
      memo := '';
      if [colnum] < 4 then 
      begin
        if [colnum] = 1 then
        begin
         if [tag] = 1 then begin memo := [GetParentName(3,3)]; Alignment := 8; end;
         if [tag] = 2 then begin memo := [GetParentName(3,6)]; Alignment := 8; end;
         if [tag] = 3 then begin memo := [GetParentName(3,9)]; Alignment := 8; end;
         if [tag] = 4 then begin memo := [GetParentName(3,12)]; Alignment := 8; end;
          if [tag] = 5 then begin memo := [setRResult."TITUL_ZCODE"]; Alignment := 8; end;
          if [tag] > 5 then begin memo := [setRResult."TITUL_ZCODE"]; Alignment := 8; end;
        end
        else
        if [colnum] = 2 then
        begin
         if [tag] = 6 then begin memo := [GetParentName(4,3)]; Alignment := 8; end;
         if [tag] = 7 then begin memo := [GetParentName(4,6)]; Alignment := 8; end;
         if [tag] = 8 then begin memo := [GetParentName(4,9)]; Alignment := 8; end;
          if [tag] > 8 then begin memo := [setRResult."OBJECT_S"]; Alignment := 8; end;
        end
        else
        if [colnum] = 3 then
        begin
         if [tag] = 9 then begin memo := [GetParentName(2,3)]; Alignment := 8; end;
         if [tag] = 10 then begin memo := [GetParentName(2,6)]; Alignment := 8; end;
         if [tag] = 11 then begin memo := [GetParentName(2,9)]; Alignment := 8; end;
         if [tag] = 12 then begin memo := [GetParentName(2,12)]; Alignment := 8; end;
        end;
      end;
    end
    
    функция getparent ищет родителя n-го уровня текущей записи в БД
    скрипт рантайм... может быть больше или меньше.. в зависимости от кол-ва выбраных полей
    но структура не изменяется
  • отредактировано 02:06
    написал:
    функция getparent ищет родителя n-го уровня текущей записи в БД
    Это ключевая фраза. Неужели нельзя для всех записей одним запросом найти нужного родителя (насколько я вижу - вариантов не много). И работать это будет на эн порядков быстрее, чем за каждой записью лазить в базу ;)
  • Евгений ПришкоЕвгений Пришко Украина, Харьков
    отредактировано 02:06
    2 Stranger
    ;-)
    слушаю твои предложения... дабы не флеймить здесь предлагаю продолжить по мылу или по аське после этого сообщения.
    но ,имхо, не зная брода - не лезь в воду.. а в данном случае, не знаю всех деталей.. как-то структуры базы и особеннсотей реализации отчета... я бы поостерегся делать столь самоуверенные утверждения
    написал:
    Неужели нельзя для всех записей одним запросом найти нужного родителя (насколько я вижу - вариантов не много). И работать это будет на эн порядков быстрее, чем за каждой записью лазить в базу smile.gif
    продолжения здесь не будет... жду ответа

    2 All
    на примере личного опыта и глядя на приведенный выше скрипт, скажите мне, добрые люди, имеет ли смысл мне тиранить свое начальство на предмет упргейда фаста?
    понимаю, что 3 лучше... в дизайнер я влюбился с первого взгляда... но начальству нужны обоснования посерьезней.... в частности, хорошим доводом было бы повышение скорости работы этого отчета....
    сам проверить не могу... поэтому оччень надеюсь на помощь многоуважаемого ALL
  • отредактировано 02:06
    Да я как-то ничего не предлагал еще ;) Просто на своем личном опыте убеждался не раз...

Оставить комментарий

Многофункциональный текстовый редактор. Чтобы отредактировать стиль параграфа, нажмите TAB, чтобы перейти к меню абзаца. Там вы можете выбрать стиль. По умолчанию не выбран ни один стиль. Когда вы выберете текст, появится встроенное меню форматирования. Нажмите TAB, чтобы войти в него. Некоторые элементы, такие как многофункциональные вставки ссылок, картинок, индикаторов загрузки и сообщений об ошибок могут быть вставлены в редактор. Вы можете перемещаться по ним, используя стрелки внутри редактора и удалять с помощью клавиш delete или backspace.