Что представляет собой хороший профиль памяти?

StackOverflow https://stackoverflow.com/questions/292920

  •  08-07-2019
  •  | 
  •  

Вопрос

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

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

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

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

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

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

Это было полезно?

Решение

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

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

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

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

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

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

Редактировать:

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

Другие советы

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

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 МБ.

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top