Создание моего объекта занимает слишком много времени.Это плохая практика - создавать кучу экземпляров при запуске, чтобы ускорить процесс позже? - PullRequest
1 голос
/ 10 октября 2010

У меня есть класс мастера, который часто используется в моей программе.К сожалению, мастеру требуется некоторое время для загрузки, в основном потому, что структура графического интерфейса очень медленная.Я несколько раз пытался изменить класс мастера (например, сделать объект многоразовым, чтобы он создавался только один раз), но я всегда где-то ударялся о кирпичную стену.Итак, на этом этапе это огромный уродливый хак, просто загрузить 50 экземпляров этого зверя в вектор и просто вытолкнуть их, когда я их использую?Таким образом, задержка будет замечена только при запуске и после этого будет работать нормально.Слишком много взлома?Распространена ли такая конструкция?

Ответы [ 3 ]

2 голосов
/ 10 октября 2010

В играх мы часто сначала выделяем и конструируем все необходимое в игровой сессии. Затем мы перерабатываем объекты, если они имеют короткий срок службы, пытаясь получить 0 выделений / выделений во время сеанса игры.

Так что нет, на самом деле это не хак, просто разумно заставить компьютер выполнять меньше работы, чтобы ускориться. Одной из стратегий является «кэширование», то есть, как правило, сначала вычисляются ваши не вариантные данные, а затем запускаются динамические. Распределение памяти, конструкции объектов и т. Д. Должны быть подготовлены перед использованием, где это возможно и необходимо.

0 голосов
/ 10 октября 2010

К сожалению, мастеру требуется некоторое время для загрузки, в основном потому, что среда графического интерфейса очень медленная.

Разве мастер не является шаблоном на основе форм?Разве это не должно нести никаких накладных расходов?Найдите, что замедляет работу фреймворка (несжатое фоновое изображение?) И исправьте основную причину.

В качестве временного промежутка вы можете создавать окна в фоновом режиме и не отображать их, пока пользователь не спросит.Но это, очевидно, просто переносит проблему куда-то еще.Даже если вы создадите их в фоновом потоке при запуске, первая команда пользователя может запросить последнего мастера, а затем им придется ждать 50 раз дольше ... что они, вероятно, воспримут как сбой.По крайней мере, предвидеть и тестировать такие угловые случаи.Также проверьте установку с низким объемом оперативной памяти.

0 голосов
/ 10 октября 2010

Да, это плохая практика, она нарушает RFC2549 стандарт.

ОК, хорошо, я просто пошутил. Делайте все, что лучше для вашего приложения. Это не вопрос "хаков" или "стандартов".

Просто убедитесь, что у вас есть надлежащая документация о том, что не так просто, как должно быть (например, хаки).

Поверьте мне, если в результате инвестирования в 5 тысяч рублей был получен продукт с множеством хаков (например, windows), то они [хаки] должны действительно помочь в какой-то момент.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...