Что представляет собой хороший профиль памяти? - PullRequest
0 голосов
/ 15 ноября 2008

При разработке каких-либо настольных приложений существуют ли какие-либо общие правила относительно того, сколько памяти должно использовать приложение?

Для тяжелых приложений их легко понять или, по крайней мере, профилировать, например, Firefox или Google Chrome. Но для небольших утилит или бизнес-приложений, сколько допустимого объема памяти используется?

Я спросил, потому что недавно я столкнулся с компромиссом между использованием памяти и производительностью и удивляюсь, есть ли общее мнение по этому поводу?

РЕДАКТИРОВАТЬ: Платформа Windows XP для пользователей с машиной, способной только для запуска многофункциональных интернет-приложений.

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

Но что было бы хорошим числом? Как вы пришли с одним? Вот об этом я и спрашиваю.

Ответы [ 3 ]

2 голосов
/ 15 ноября 2008

Нет абсолютного ответа на это. Это зависит от слишком большого количества переменных.

Вот некоторые компромиссы для рассмотрения:

  • Для какого устройства / платформы вы разрабатываете?
  • Ожидаете ли вы, что ваш пользователь будет использовать это программное обеспечение в качестве основного назначения для своего компьютера (например, может быть, вы разрабатываете какое-то серверное программное обеспечение)
  • Кто является вашей целевой аудиторией, домашние пользователи? продвинутые пользователи?
  • Вы делаете реалистичные ожидания относительно объема оперативной памяти, которую будет иметь пользователь?
  • Принимаете ли вы во внимание, что пользователь будет использовать на этом компьютере также много других программ?

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

Я бы обычно рекомендовал использовать больше оперативной памяти для увеличения скорости, если необходимо. Но только если требования к оперативной памяти реалистичны для вашей целевой аудитории. Например, если вы ожидаете, что домашний пользователь, имеющий 1 ГБ ОЗУ, будет использовать вашу программу, не используйте 600 МБ ОЗУ самостоятельно.

Подумайте об использовании большего объема ОЗУ в этом случае, чтобы повысить скорость и оптимизировать другую часть кода, чтобы использовать меньше ОЗУ.

Изменить:

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

1 голос
/ 15 ноября 2008

Это полностью зависит от вашей целевой платформы, которая является более или менее деловым решением. Чем больше памяти вам понадобится, тем меньше клиентов смогут использовать ваше программное обеспечение. Несколько вопросов: сколько памяти ваши клиенты (или потенциальные клиенты) установили на своих компьютерах? Какие другие приложения будут работать одновременно с вашим приложением? Предполагается, что ваше приложение работает исключительно (например, полноэкранная компьютерная игра), или утилита, которая должна работать в основном в фоновом режиме, или часто включаться в нее из других приложений?

Hear является одним из примеров опроса, показывающего распределение установленной оперативной памяти в системах людей, играющих в игры через Steam (источник: Valve - сводные данные опроса ):

  • Менее 96 Мб 0,01%
  • 96 Мб до 127 Мб 0,01%
  • 128 Мб до 255 Мб 0,21%
  • 256 Мб до 511 Мб, 5,33%
  • 512 Мб до 999 Мб 19,81%
  • 1 ГБ до 1,49 ГБ 30,16%
  • 1,5 ГБ до 1,99 ГБ 6,10%
  • 2,0 Гб 38,37%

Вывод, который я могу сделать из такого опроса в своем домене (компьютерные игры), заключается в том, что я могу ожидать, что почти все наши пользователи имеют 512 МБ или более, а подавляющее большинство - 1 ГБ или более. Для компьютерной игры, которая должна работать исключительно, это означает, что рабочий набор около 400 МБ является довольно безопасным и практически никого не ограничит, и если он обеспечивает значительную добавленную стоимость для продукта, может иметь смысл иметь рабочий набор около 800 МБ.

0 голосов
/ 15 ноября 2008

Это зависит от вашего целевого оборудования ПК. Если ваше приложение использует слишком много памяти, оно будет работать медленно на страницах Windows. ТЕСТОВОЕ ЗАДАНИЕ! Попробуйте оба варианта в вашем компромиссе, и некоторые промежуточные, если это имеет смысл. Запустите тесты на типичной машине, которую будут использовать ваши пользователи, и откройте разумное количество других приложений. Так что для большинства людей это Outlook и, возможно, экземпляр или два Internet Explorer (или почтовый клиент / браузер на ваш выбор). Я работаю в организации, где пользователи моего приложения также могут запускать некоторые другие пользовательские приложения, поэтому мы тестируем и те, которые работают. Мы обнаружили, что наше приложение использует слишком много памяти и делает переключение приложений мучительно медленным, поэтому мы немного замедлили работу нашего приложения, чтобы уменьшить использование памяти. Если вы заинтересованы, наше целевое оборудование изначально было 512 МБ, потому что это было то же, что и у нашей стандартной стандартной рабочей станции. Несколько компьютеров пришлось обновить до 1 Гб из-за этого приложения. Сейчас мы немного сократили использование ОЗУ, но оно написано на VB .NET, и большая часть используемой памяти, по-видимому, является платформой. PerfMon говорит, что процесс использует около 200 МБ (пик), но управляемая куча составляет всего около 2 МБ!

...