Welcome, Guest. Please login or register.
Did you miss your activation email?

Author Topic: Вопросы по 1.3.1  (Read 38266 times)

GraninDm

  • Jr. Member
  • **
  • Posts: 84
    • View Profile
Re: Вопросы по 1.3.1
« Reply #60 on: February 01, 2016, 08:51:40 AM »
Последнее исправление работает. Спасибо

По быстродействию...
Отчет 2 страницы.

Release
libpng warning: iCCP: known incorrect sRGB profile
render time = 1807
Debug
libpng warning: iCCP: known incorrect sRGB profile
render time = 4150

Машина i5-4430 8Гб
ПО
Win 7 x64 Rus Pro
Qt 5.4.2 mingw4.91 32bit
Использую QSqlQueryModel заполняю из postgresql.
На момент печати модель уже создана и выведена на экран, т.е. полностью готова.

Arin Alex

  • Developer
  • Administrator
  • Hero Member
  • *****
  • Posts: 992
    • View Profile
Re: Вопросы по 1.3.1
« Reply #61 on: February 01, 2016, 03:56:03 PM »
Можете мне кинуть Ваш шаблон отчета ?

GraninDm

  • Jr. Member
  • **
  • Posts: 84
    • View Profile
Re: Вопросы по 1.3.1
« Reply #62 on: February 01, 2016, 04:00:56 PM »
В приложении отчет

[вложение удалено администратором]

Arin Alex

  • Developer
  • Administrator
  • Hero Member
  • *****
  • Posts: 992
    • View Profile
Re: Вопросы по 1.3.1
« Reply #63 on: February 02, 2016, 09:32:40 PM »
Прогнали проект через профилировщик очевидных точек увеличения производительности найти не удалось.

GraninDm

  • Jr. Member
  • **
  • Posts: 84
    • View Profile
Re: Вопросы по 1.3.1
« Reply #64 on: February 03, 2016, 11:02:26 AM »
Сразу хочу сказать, что я не большой знаток Qt...

Я посмотрел ваш код
Code: [Select]
BaseDesignIntf *BaseDesignIntf::cloneItemWOChild(ItemMode mode, QObject *owner, QGraphicsItem *parent)
{
    BaseDesignIntf *clone = createSameTypeItem(owner, parent);
    clone->setObjectName(this->objectName());
    clone->setItemMode(mode);
    clone->objectLoadStarted();
    for (int i = 0; i < clone->metaObject()->propertyCount(); i++) {
        if (clone->metaObject()->property(i).isWritable()){
            clone->setProperty(clone->metaObject()->property(i).name(), property(clone->metaObject()->property(i).name()));
        }
    }
    clone->objectLoadFinished();
    return clone;
}
Вот тут тратиться 90% времени на рендеринг (по крайней мере, мне так кажется :) )
clone->setProperty(clone->metaObject()->property(i).name(), property(clone->metaObject()->property(i).name()));
Копирование одного элемента (BaseDesignIntf) идет несколько миллисекунд.

Я понимаю, что Q_PROPERTY штука очень интересная и достаточно универсальная, но это страшный тормоз.
Мне кажется, что Вы зря связались с Q_PROPERTY

Не могли бы Вы вкратце объяснить для чего вы используете клонирование элементов?
Как вообще работает рендеринг?

Arin Alex

  • Developer
  • Administrator
  • Hero Member
  • *****
  • Posts: 992
    • View Profile
Re: Вопросы по 1.3.1
« Reply #65 on: February 03, 2016, 12:26:27 PM »
setProperty, на самом деле, не так много времени отъедает от процесса.
Этот механизм позволяет инициализировать объекты абсолютно неизвестных классов, единственное, что нужно знать, что это наследник QObject.
Время съедается тем, что происходит в процессе установки значения.
Я могу сказать, что мы немного покрутили код и сейчас cloneItem занимает 8,75% процентов времени.

Процесс рендеринга это, как раз и есть, клонирование шаблонных элементов и заполнение их реальными значениями.



[вложение удалено администратором]
« Last Edit: February 03, 2016, 12:35:49 PM by Arin Alex »

GraninDm

  • Jr. Member
  • **
  • Posts: 84
    • View Profile
Re: Вопросы по 1.3.1
« Reply #66 on: February 03, 2016, 12:40:12 PM »
Я говорил про cloneItemWOChild
У Вас в профайлере видно даже, что cloneItemWOChild занимает 0,09% и вызвано 1191 раз.
использование metaobject это всегда медленно.

Arin Alex

  • Developer
  • Administrator
  • Hero Member
  • *****
  • Posts: 992
    • View Profile
Re: Вопросы по 1.3.1
« Reply #67 on: February 03, 2016, 12:48:29 PM »
cloneItemWOChild занимает 8.71%, при этом, чтение и запись пропертей занимает от этого времени 5,18%.
Можно, конечно, делать клонирование без пропертей, но это поможет увеличить производительность меньше чем на 5 процентов, а оно того стоит ?

GraninDm

  • Jr. Member
  • **
  • Posts: 84
    • View Profile
Re: Вопросы по 1.3.1
« Reply #68 on: February 03, 2016, 12:50:46 PM »
Ок.
Вам видней, не буду спорить.
Буду надеяться на увеличение скорости в будущих релизах.

GraninDm

  • Jr. Member
  • **
  • Posts: 84
    • View Profile
Re: Вопросы по 1.3.1
« Reply #69 on: February 04, 2016, 01:59:41 PM »
Еще предложение.
Сделайте, пожалуйста, в заголовке дизайнера отображение имени файла отчета.

Оказывается полное имя файла внизу выведено. Не заметил сразу. :)
« Last Edit: February 04, 2016, 03:38:33 PM by GraninDm »

Arin Alex

  • Developer
  • Administrator
  • Hero Member
  • *****
  • Posts: 992
    • View Profile
Re: Вопросы по 1.3.1
« Reply #70 on: February 04, 2016, 10:33:56 PM »
Новый фикс

1. Покрутили производительность
2. Изменили выделение группы объектов (Выделение мышью области отчета с зажатым Shift )
3. Изменили копирование, вырезку и вставку объектов (Актуально для отчетов в шаблоне, которых много объектов)
4. Добавлено имя отчета, в случае загрузки из файла, совпадает с именем файла и выводится в заголовке окна.
    Может использоваться для идентификации отчета при загрузке из БД
5. Добавлено свойство "startNewPage" у банда "Дата (Data)"
6. Оптимизировали вывод сообщений об ошибках (знак вопроса на тулбаре в окне предварительного просмотра)

ВНИМАНИЕ
7. В начиная с этой версии, элемент "Текст" по умолчанию не использует HTML.
    Для включения поддержки HTML нужно использовать свойство allowHTML


[вложение удалено администратором]
« Last Edit: February 04, 2016, 11:00:16 PM by Arin Alex »

svvord

  • Newbie
  • *
  • Posts: 21
    • View Profile
Re: Вопросы по 1.3.1
« Reply #71 on: February 05, 2016, 02:21:46 AM »
А был седьмой хотфикс? Я как-то пропустил... =)

Arin Alex

  • Developer
  • Administrator
  • Hero Member
  • *****
  • Posts: 992
    • View Profile
Re: Вопросы по 1.3.1
« Reply #72 on: February 05, 2016, 02:55:03 AM »
Не, не было :) видимо хотел выложить, архив сделал, а выложить не выложил :)
« Last Edit: February 05, 2016, 02:56:49 AM by Arin Alex »

svvord

  • Newbie
  • *
  • Posts: 21
    • View Profile
Re: Вопросы по 1.3.1
« Reply #73 on: February 05, 2016, 06:00:28 AM »
Следует ли какую-то подготовку производить перед printToPDF?
У меня после восьмого хотфикса эта функция вообще перестала сохранять документы.

GraninDm

  • Jr. Member
  • **
  • Posts: 84
    • View Profile
Re: Вопросы по 1.3.1
« Reply #74 on: February 05, 2016, 12:04:07 PM »
Теперь значительно шустрее отчет работает.
Я думаю это правильное решение отключить HTML
А вот при выделении объектов с шифтом желательно рамку рисовать, а то непонятно выделяется или нет

А шрифт по умолчанию будет?