Russian Qt Forum
Ноябрь 23, 2024, 08:43 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1] 2   Вниз
  Печать  
Автор Тема: QNAM+get  (Прочитано 9203 раз)
pb_dev
Гость
« : Декабрь 27, 2013, 22:02 »

Здравствуйте товарищи.
В чем проблема собственно. Есть вот такой запрос:
Код:
void Widget::startTranslate() // отправка запроса переводчику google
{
    ui->TranslatedText->clear();
    QString TextToTranslate = ui->TextToTranslate->toPlainText();
    QString s_lang = "en";
    QString t_lang = "ru";

    qnam->get(QNetworkRequest(QUrl(UrlToGoogleTranslator + TextToTranslate + "+&sl" + s_lang + "&tl" + t_lang)));
}  

Ответ обрабатываю в след. слоте:
Код:
void Widget::TranslateFinished(QNetworkReply *reply) // ответ от googla содержащий переведенный текст
{
    QString answer = QString::fromUtf8(reply->readAll());
    ui->TranslatedText->insertPlainText(ParseText(answer));

    reply->deleteLater();
}

При выполнении метода Get (в первый раз, сразу после запуска программы) размер программы в памяти резко увеличивается с 5мб до 7мб(+/-).  Есть пара мыслей, но почему так много понять не могу.
« Последнее редактирование: Декабрь 27, 2013, 22:05 от pb_dev » Записан
gil9red
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 1805



Просмотр профиля WWW
« Ответ #1 : Декабрь 27, 2013, 22:08 »

Текст, который вы вставили в текстовый редактор (походу QTextEdit или QTextBrowser) тоже весит чего то Улыбающийся
Записан

pb_dev
Гость
« Ответ #2 : Декабрь 27, 2013, 22:11 »

Текст, который вы вставили в текстовый редактор (походу QTextEdit или QTextBrowser) тоже весит чего то Улыбающийся

QplainTextEdit содержащий слово hello

2 gil9red:
Проблема в том что именно когда я первый раз (после запуска программы) вызываю этот слот происходит это явление. В след. запросах память остаётся 7мб(+/-) только задержек таких уже нету (все быстро переводится)

Вопрос остается тот же
« Последнее редактирование: Декабрь 27, 2013, 22:45 от pb_dev » Записан
Bepec
Гость
« Ответ #3 : Декабрь 27, 2013, 22:50 »

А давайте подумаем что происходит вместе.

Очищается поле,
Создаются строчки,
Создаётся объект типа QNetworkReply.

Как думаете, что может занимать 7 мб?
Записан
pb_dev
Гость
« Ответ #4 : Декабрь 27, 2013, 23:02 »

А давайте подумаем что происходит вместе.

Очищается поле,
Создаются строчки,
Создаётся объект типа QNetworkReply.

Как думаете, что может занимать 7 мб?

Не 7 а 2. После запуска, программа весит 5мб, после отправки запроса увеличивается на 2мб. Не в этом суть.

Повторюсь, после нажатия на кнопки "Отправить", в первый раз, после запуска программы, потребляемая память увеличивается на 2мб, что создает видимость задержки примерно в 2сек.

Во второй и n(ый) раз уже, эта задержка настолько мизерная, что её почти не видно.

Ваше виденье ситуации? Что нужно тут изменить
« Последнее редактирование: Декабрь 27, 2013, 23:06 от pb_dev » Записан
Bepec
Гость
« Ответ #5 : Декабрь 27, 2013, 23:20 »

А зачем менять?

Заполните пожалуйста Улыбающийся

1) Очистка поля - __ мб
2) Создаются строчки - __ мб
3) Создаётся QNetworkReply - __ мб

Я вас тихонько подвожу.

PS и всё же, 5 мб вам делают погоду? Показает язык
Записан
pb_dev
Гость
« Ответ #6 : Декабрь 27, 2013, 23:33 »

А зачем менять?

Заполните пожалуйста Улыбающийся

1) Очистка поля - __ мб
2) Создаются строчки - __ мб
3) Создаётся QNetworkReply - __ мб

Я вас тихонько подвожу.

PS и всё же, 5 мб вам делают погоду? Показает язык

Убрал очистку поля, создал строки в конструкторе, остается QNReply который весить 2мб физически не может

пс: Вы ведете к тому чтоб я юзал чистые сокеты?) Что Qt га*но, и юзать классы неправильно?) Или я Вас неправильно понял?)

ппс: вот коннекты

Код:
connect(ui->btn_Translate, SIGNAL(clicked()), this, SLOT(startTranslate()));
connect(qnam, SIGNAL(finished(QNetworkReply*)), this, SLOT(TranslateFinished(QNetworkReply*)));
« Последнее редактирование: Декабрь 27, 2013, 23:37 от pb_dev » Записан
gil9red
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 1805



Просмотр профиля WWW
« Ответ #7 : Декабрь 28, 2013, 00:48 »

Когда вы имеете дело с qt, забудьте про экономию памяти Улыбающийся
утечки памяти, конечно, не нужно устраивать, но трястись из-за нескольких мегабайт не стоит )
Записан

pb_dev
Гость
« Ответ #8 : Декабрь 28, 2013, 01:57 »

Когда вы имеете дело с qt, забудьте про экономию памяти Улыбающийся
утечки памяти, конечно, не нужно устраивать, но трястись из-за нескольких мегабайт не стоит )

Спасибо за совет)
Но мне кажется что-то тут нечисто. У меня Qt 5.1.1. Подозреваю это какой-то баг, надо будет попробовать на других версиях
А может я что-то упустил...
Записан
gil9red
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 1805



Просмотр профиля WWW
« Ответ #9 : Декабрь 28, 2013, 02:02 »

У меня 4.8.* и я бед не знаю Смеющийся
Записан

pb_dev
Гость
« Ответ #10 : Декабрь 28, 2013, 02:10 »

У меня 4.8.* и я бед не знаю Смеющийся

Где-то читал коммент, цитирую: "К сожалению Qt5 ожидания не оправдал, пришлось вернутся к 4ой версии"  Плачущий

Даже так: Уменьшен размер установочного файла, на целых десять мегабайт!! (переход на Qt5 не оказался оправданным, вернулись к 4.8.4)
« Последнее редактирование: Декабрь 28, 2013, 02:12 от pb_dev » Записан
gil9red
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 1805



Просмотр профиля WWW
« Ответ #11 : Декабрь 28, 2013, 02:46 »

Просто Qt5, похоже, еще пока "сырой" Улыбающийся
Записан

Bepec
Гость
« Ответ #12 : Декабрь 28, 2013, 08:47 »

Чем мне не нравится Qt5, тем что в него засунули кучу всякой фигни и приплюснули QML.
Сам на Qt 4.7.2 сижу.
Записан
LisandreL
Птица говорун
*****
Offline Offline

Сообщений: 984


Надо улыбаться


Просмотр профиля
« Ответ #13 : Декабрь 28, 2013, 15:58 »

При выполнении метода Get (в первый раз, сразу после запуска программы) размер программы в памяти резко увеличивается с 5мб до 7мб(+/-).  Есть пара мыслей, но почему так много понять не могу.
Ну подгружает она в память dll. Ну не при загрузке, а при первом обращении к функции эту dll использующую. В чём проблема-то?
Записан
pb_dev
Гость
« Ответ #14 : Декабрь 28, 2013, 16:20 »

При выполнении метода Get (в первый раз, сразу после запуска программы) размер программы в памяти резко увеличивается с 5мб до 7мб(+/-).  Есть пара мыслей, но почему так много понять не могу.
Ну подгружает она в память dll. Ну не при загрузке, а при первом обращении к функции эту dll использующую. В чём проблема-то?

Во-во, что-то ближе к истине, только когда я через дебагер посмотрел, там он этих dll загружает не одну, а штук 5 (+/-)
Записан
Страниц: [1] 2   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.178 секунд. Запросов: 23.