Оцените минимальные требования к программному обеспечению
Есть ли способ оценить минимальные требования к программному обеспечению? Я имею в виду, как я могу найти, например, минимальный объем оперативной памяти, который понадобится моему приложению?
Спасибо!
5 ответов
Профилировщик вам здесь не поможет. Ни один не будет оценивать размер структур данных.
Профилировщик, безусловно, может сказать вам, где ваш код тратит больше всего процессорного времени, но он не скажет вам, если вы пропустили целевые показатели производительности - например, будут ли ваши пользователи довольны или недовольны производительностью вашего приложения в любой конкретной системе.
Простое вычисление размера структур данных и того, сколько их может быть выделено одновременно, не даст вам точной картины использования памяти с течением времени. Причина заключается в том, что использование памяти определяется многими другими факторами, включая объем ввода-вывода, который выполняет ваше приложение, какие операционные системы использует ваше приложение и, что наиболее важно, временный характер использования приложением памяти.
Самый эффективный способ понять минимальные требования - это
- Убедитесь, что у вас есть эффективный способ измерения производительности с помощью показателей, которые важны для вашего пользователя. лучший показатель - это время отклика. В зависимости от вашего приложения может применяться скорость, например пропускная способность или количество операций в секунду. Ваши измерения могут быть эмпирическими (например, просто попробуйте), но это наименее эффективно. Лучше всего это сделать с помощью какой-то аппаратуры. На окнах выбор [ETW][1]. Другие операционные системы имеют другие подходящие механизмы.
- Иметь какой-то автоматизированный метод осуществления вашего приложения. Это позволит вам сделать повторные и надежные измерения.
- Измерьте ваше приложение, используя различные объемы памяти и посмотрите, где производительность начинает страдать. Это также может выявить ошибки производительности, которые мешают вашему приложению работать хорошо. Если у вас есть доступ к платформам с разным уровнем производительности, используйте их. Вы не указали, что делает ваше приложение, но тестирование на нетбуке с 1 ГБ памяти отлично подходит для многих (не всех) клиентских приложений.
Вы можете сделать то же самое с процессором и другими компонентами, такими как диск, сеть или графический процессор.
Также обратите внимание, что здесь нет простого ответа - эффективная работа по установлению минимальных требований - это реальная работа. Это особенно верно, если ваше приложение чувствительно к участию в том или ином аспекте платформы.
Существуют и другие факторы - например, ваше приложение может нормально работать в одной конфигурации, пока пользователь не откроет другое приложение, которое может потреблять память или загружать процессор. Пользователи редко имеют только одно открытое приложение.
Это означает, что в дополнение к указанию минимальных требований вы должны выполнять эффективную работу по настройке ожиданий пользователя - это объясняет, когда ваше приложение будет работать хорошо, а когда - нет, и какие факторы влияют на производительность.
[1]: http://msdn.microsoft.com/en-us/library/ms751538.aspxсильный текст
В идеале вы должны принять решение о минимальных требованиях к программному обеспечению в зависимости от вашей целевой аудитории, а затем протестировать свое программное обеспечение во время разработки на этой конфигурации, чтобы убедиться, что оно обеспечивает удовлетворительные результаты.
Вы можете посмотреть на систему, на которой работает ваше программное обеспечение, и посмотреть, сколько памяти используется вашим приложением, и использовать это для определения того, сколько памяти используется. Процессор немного сложнее - вы можете попытаться смоделировать требования к вашему процессору, но сделать это точно может быть сложно.
Но в конечном итоге вам нужно протестировать свое приложение на целевой системе.
Учитывая структуры данных, используемые приложением, оцените, сколько места они будут занимать при обычном использовании. Используя эту оценку, настройте количество машин (виртуальных или физических) для проверки оценки в различных сценариях (например, в разных целевых операционных системах, в разных настройках виртуальной памяти и т. Д.).
Затем измерьте производительность приложения в различных сценариях. Минимальными настройками будет машина, которая работает наименее адекватно, но при этом остается приемлемой.
Вы можете попробовать использовать профилировщик производительности в своем программном обеспечении во время стресс-тестирования.
Вы можете использовать виртуализацию для многократного запуска репрезентативного набора тестов с различными объемами оперативной памяти на виртуальной машине... когда производительность падает ниже допустимого уровня из-за перестановки, вы обнаружите потребность в памяти.