Есть в Windows 7 такой себе индекс производительности. Он якобы призван показать, подходит ли ваш компьютер для использования Windows 7. Однако, мы знаем страшную правду – этот рейтинг нужен исключительно для того, чтобы хвастаться перед друзьями.
И если в рейтинге оценка вашего жесткого диска оставляет желать лучшего – есть один простой способ, как ее можно повысить, не меняя жесткий диск на какой-то крутой с 15 тысячами оборотов.
Способов увеличить индекс производительности существует несколько. Их мы и рассмотрим.
Способ 1: программа Windows 7 rating changer
Самый простой способ – это, конечно же, использовать читерскую программу Windows 7 rating changer, которая позволяет “накрутить” индекс производительности так, как вам нужно.
Скачать Windows 7 rating changer
Скачайте программу. Прежде чем ее запустить, отключите UAC и перезагрузитесь – иначе установить программу будет нельзя. Программа простая как тапок – просто укажите те показатели индекса производительности Windows 7, что вам нужны, ничего сложного.
Допустимые значения от 1 до 7,9. Менять можно как одно, так и несколько значений. Осталось щелкнуть на кнопке Save и закрыть окно программы. Теперь заново проверьте индекс производительности Windows 7 и наслаждайтесь крутыми цифрами.
Способ 2: изменение файла XML
Данный способ посложнее, но результат также будет весьма хорош. В первую очередь необходимо перейти в такую папку:
C:\Windows\Performance\WinSAT\DataStore
В этой папке откройте в любом текстовом редакторе файл Formal.Assessment (Initial).WinSAT. Таких файлов может быть несколько – в подобном случае выберите самый новый (смотрите по дате).
В открывшемся файле найдите блок <WinSPR> – именно там и находятся нужные нам значения.
Изменить можно как одно значение, так и все сразу:
- <SystemScore> – общая;
- <MemoryScore> – оценка памяти;
- <CpuScore> – оценка процессора;
- <GraphicsScore> – оценка графики;
- <GamingScore> – оценка графики для игр;
- <DiskScore> – оценка жесткого диска.
Собственно говоря, достаточно изменить общую оценку SystemScore чтобы получить максимальную (или какую вам нужно) общую оценку. Ничто не мешает поставить 7,9 вообще всем компонентам – правда, это будет не слишком-то правдоподобно.
Осталось файл сохранить и дело в шляпе. Проведите оценку производительности заново и насладитесь новым рейтингом.
Выполнить издевательство над файлом XML можно только с правами администратора системы.
ЗЫ. Кое-кто считает что накручивание индекса производительности – странное и неблагодарное занятие. Мол, вот если бы производительность действительно росла, а так – увеличивается лишь циферка на рейтинге. Однако, почему бы и нет? На форумах многие мажоры, которым богатые родители дали денежек на компьютер, спамят своим горделивым рейтингом 7,9 – почему бы не сбить с поганцев немножко спеси? Это весело ^_^
Реализация DI в PHP
Jason-Webb 13.05.2025
Когда я начинал писать свой первый крупный PHP-проект, моя архитектура напоминала запутаный клубок спагетти. Классы создавали другие классы внутри себя, зависимости жостко прописывались в коде, а о. . .
Обработка изображений в реальном времени на C# с OpenCV
stackOverflow 13.05.2025
Объединение библиотеки компьютерного зрения OpenCV с современным языком программирования C# создаёт симбиоз, который открывает доступ к впечатляющему набору возможностей. Ключевое преимущество этого. . .
POCO, ACE, Loki и другие продвинутые C++ библиотеки
NullReferenced 13.05.2025
В C++ разработки существует такое обилие библиотек, что порой кажется, будто ты заблудился в дремучем лесу. И среди этого многообразия POCO (Portable Components) – как маяк для тех, кто ищет. . .
Паттерны проектирования GoF на C#
UnmanagedCoder 13.05.2025
Вы наверняка сталкивались с ситуациями, когда код разрастается до неприличных размеров, а его поддержка становится настоящим испытанием. Именно в такие моменты на помощь приходят паттерны Gang of. . .
Создаем CLI приложение на Python с Prompt Toolkit
py-thonny 13.05.2025
Современные командные интерфейсы давно перестали быть черно-белыми текстовыми программами, которые многие помнят по старым операционным системам. CLI сегодня – это мощные, интуитивные и даже. . .
Конвейеры ETL с Apache Airflow и Python
AI_Generated 13.05.2025
ETL-конвейеры – это набор процессов, отвечающих за извлечение данных из различных источников (Extract), их преобразование в нужный формат (Transform) и загрузку в целевое хранилище (Load). . . .
Выполнение асинхронных задач в Python с asyncio
py-thonny 12.05.2025
Современный мир программирования похож на оживлённый мегаполис – тысячи процессов одновременно требуют внимания, ресурсов и времени. В этих джунглях операций возникают ситуации, когда программа. . .
Работа с gRPC сервисами на C#
UnmanagedCoder 12.05.2025
gRPC (Google Remote Procedure Call) — открытый высокопроизводительный RPC-фреймворк, изначально разработанный компанией Google. Он отличается от традиционых REST-сервисов как минимум тем, что. . .
CQRS (Command Query Responsibility Segregation) на Java
Javaican 12.05.2025
CQRS — Command Query Responsibility Segregation, или разделение ответственности команд и запросов. Суть этого архитектурного паттерна проста: операции чтения данных (запросы) отделяются от операций. . .
Шаблоны и приёмы реализации DDD на C#
stackOverflow 12.05.2025
Когда я впервые погрузился в мир Domain-Driven Design, мне показалось, что это очередная модная методология, которая скоро канет в лету. Однако годы практики убедили меня в обратном. DDD — не просто. . .
Индекс производительности Windows (WEI) измеряет возможности аппаратной и программной конфигураций компьютера и представляет результат измерения как число, называемое базовым индексом производительности. Оценка получается для следующих подсистем ПК:
- Процессор
- Память (RAM)
- Графика (производительность рабочего стола для Windows Aero)
- 3D-графика (производительность трехмерной графики и игр)
- Основной жесткий диск
Более высокое значение базового индекса производительности означает, что компьютер будет работать лучше и быстрее, особенно при выполнении более сложных и ресурсоемких задач, чем компьютер с более низким значением базового индекса.
Каждый аппаратный компонент получает отдельную оценку. Базовое значение индекса производительности компьютера определяется самыми низкими очками в данном подуровне оценки. Например, если отдельный компонент получил самую низкую оценку в 3,2 очка, базовый индекс производительности также равен 3,2. Базовый индекс производительности не является средним значением оценок. Однако отдельные оценки могут дать представление о производительности компонентов и помочь понять, какие компоненты требуется обновить.
Базовый индекс производительности может помочь при покупке программ и другого программного обеспечения, соответствующего базовому индексу компьютера. Например, если базовый индекс компьютера равен 3,3, можно уверенно приобретать любое программное обеспечение, разработанное для этой версии Windows и требующее компьютер со значением базового индекса, равного 3 и ниже. Обычно это значение указывается на упаковке ПО в разделе системных требований.
В настоящее время значения общих оценок производительности компьютеров в Windows 7 варьируются от 1,0 до 7,9. Разработка индекса производительности Windows 7 вызвана прогрессом компьютерных технологий. По мере повышения производительности оборудования будет вводиться более высокий индекс производительности. Однако стандарты для каждого уровня индекса остаются, в целом, неизменными.
Важное замечание:
Следует учитывать, что программа тестирования, встроенная в Windows 7 для определения индекса производительности Windows, не является идеальным бенчмарком: получаемые значения индекса WEI для разных процессоров могут не показывать, сколь существенна разница в производительности между старшими и младшими моделями центральных процессоров. Кроме того, разные типы программного обеспечения по-разному нагружают ПК, поэтому нельзя делать заключение о производительности системы основываясь на результаты лишь одной тестовой программы.
К плюсам индекса производительности Windows (WEI) можно отнести доступность (данная утилита встроена в Windows 7 изначально) и воспроизводимость (показания WEI для ПК с одинаковыми конфигурациями, как правило, совпадают).
Откройте раздел «Счетчики и средства производительности». Для этого нажмите кнопку Пуск и выберите компонент Панель управления. Затем выберете Система и безопасность — Проверка индекса производительности Windows — затем нажмите кнопку Оценить производительность.
Просмотрите отдельные и общую оценки индекса производительности Windows 7 своего компьютера. Если после недавнего обновления оборудования нужно узнать, изменился ли индекс, нажмите кнопку Выполнить повторную оценку.
- Производительность в играх компьютеров марки Team
Алексей Федоров (сотрудник российского представительства компании Microsoft (alexeif@microsoft.com))
Утилита WinSAT и индекс WinEI
Процессор
Память
Диск
Графическая подсистема
Программные интерфейсы WinSAT
Доступ к данным WinSAT через WMI
В предыдущих статьях данного цикла мы начали обсуждение средств, входящих в состав операционной системы Windows, которые позволяют определять состояние памяти, задач, процессов, следить за производительностью, событиями, вычислять индекс производительности и получать данные из различных подсистем. В настоящей статье мы завершим обсуждение данной категории инструментов.
Утилита WinSAT и индекс WinEI
Для измерения общей производительности ключевых компонентов системы можно также использовать утилиту командной строки WinSAT (Windows System Assessment Tool). Данные, собираемые этой утилитой, лежат в основе Windows Experience Index (WinEI) — индекса производительности системы, отображаемого в панели управления в разделе Performance Information and Tools (рис. 1).
Рис. 1. Windows Experience Index
Для каждого компьютера рассчитывается базовый индекс, который может варьироваться в диапазоне от 1.0 до 7 (в Windows Vista индекс мог быть не более 5.9). Измерения проводятся в пяти группах: скорость процессора (CPU Assessment), памяти (Memory Assessment), графической подсистемы (DWM Assessment), игровой графики и мультимедиа (D3D Graphics Assessment, Media Assessment) и диска (Disk Assessment) — самый меньший индекс присваивается всей системе.
Полученные в результате измерения данные (а измерение в обязательном порядке проводится после установки операционной системы) применяются для определения того, какие компоненты системы, например Aero, будут активированы и, при необходимости, могут считываться приложениями для более точной настройки — интерфейса, графических возможностей и т.п. Утилита запускается командой WinSAT.exe (%windir%\System32\WinSAT.exe) и использует библиотеку WinSATAPI.dll.
Отдельные тесты могут быть запущены указанием соответствующего параметра командной строки. Например, команда
C:\>winsat disk –seq –read –n 0
выполнит измерение производительности диска 0 в тесте на последовательное чтение.
Помимо индивидуальных тестов WinSAT может выполнить описанную ранее общую оценку системы с предопределенными параметрами и сохранить результат в XML-файле. Результаты всех базовых тестов располагаются в каталоге %WinDir%\Performance\WinSAT, а файлы результатов выполнения отдельных тестов — в каталоге %WinDir%\Performance\WinSAT\DataStore. Изначальный результат измерения системы находится в файле YYYY-MM-DD HH.MM.SS.MSS Formal Assessment (Initial).WinSAT.XML, а результат самого последнего измерения системы — в файле YYYY-MM-DD HH.MM.SS.MSS Formal Assessment (Recent).WinSAT.XML, где и в том, и в другом случае первая группа в имени файла указывает дату и время создания отчета.
Для выполнения общей оценки системы следует выполнить команду, приведенную на рис. 2.
Рис. 2. Выполнение теста общей оценки системы
C:\>winsat formal
Давайте рассмотрим каждый групповой тест и узнаем, что и как в нем измеряется и как можно использовать полученные данные.
Процессор
Тест процессора включает несколько операций, и результат каждой из них отображается отдельно. Применяются два типа нагрузочных тестов — шифрование и сжатие.
В случае шифрования выделяются два буфера — источник и приемник указанного размера, и при этом источник заполняется случайными данными. Далее с помощью стандартных функций Win32 Cryptographic APIs — CryptEncrypt() и CryptDecrypt() — данные шифруются и расшифровываются. При тестировании с помощью Read Time Stamp Counter (RDTSC) измеряется время обеих операций.
В случае сжатия также выделяется два буфера — источник и приемник указанного размера, но источник заполняется определенными данными. Далее используются функции RtlCompressBuffer() и RtlDecompressBuffer(), применяющие алгоритм сжатия LZNT1 — тот же, что используется файловой системой NTFS. Содержимое источника сжимается в приемник, а затем содержимое приемника распаковывается в источник. При тестировании с помощью Read Time Stamp Counter (RDTSC) измеряется время обеих операций.
Для выполнения теста процессора используйте команду
C:\>winsat cpuformal
В Windows Vista результаты тестирования процессора делятся на три категории:
- 2.0-4.7 — одноядерный процессор с частотой порядка 850 МГц типа K7 или P4;
- 4.8 и выше — стандартный двухъядерный процессор;
- до 5.8 — высокопроизводительный двухъядерный процессор.
- В Windows 7 диапазон индексов процессора расширен для поддержки 8- и 16-ядерных процессоров. Добавлены следующие категории:
- до 5.9 — системы с одним или двумя физическими ядрами;
- 6.0-6.5 — высокопроизводительный двухъядерный процессор;
- 6.5-6.9 — новые процессоры AMD Phenom X3 с тремя ядрами;
- выше 7 — четырехъядерные процессоры;
- 7.9 — новые процессоры AMD Opteron с шестью ядрами (рис. 3).
Как и в случае с графикой (табл. 1), диапазоны индексов процессора указывают на его применимость для решения тех или иных задач.
Таблица 1. Индексы процессора
Индекс |
Описание |
< 2.0 |
Очень медленный процессор, не подходящий для нормальной работы Windows 7 |
2.02.9 |
Можно выполнять отдельные задачи: чтение почты, просмотр web, редактирование документов. Для такого класса процессоров даже базовые задачи могут вызывать его повышенную утилизацию. Многозадачная работа может приводить к заметным задержкам |
3.03.9 |
Можно выполнять основные задачи в многозадачном режиме |
4.049 |
Подходит для выполнения большинства задач |
5.05.9 |
Подходит для выполнения большинства задач, позволяет использовать многоядерные системы для работы с Excel, обработки изображений, компилирования кода. Подходит для большинства компьютерных игр |
6.06.9/7.07.9 |
Компьютерные системы с такими индексами могут применяться для многозадачного выполнения любых задач: обработки электронных таблиц большого объема, рендеринга графики, научных расчетов и т.п. |
Рис. 3. Выполнение теста процессора
Память
Производительность памяти является одним из ключевых факторов, определяющих производительность всей системы и оптимальное выполнение компьютерных игр, программ редактирования и обработки фото- и видеоматериалов, а также выполнения других вычислительных задач. Тест памяти вычисляет ее пропускную способность, выполняя последовательность операций копирования из буфера в буфер (рис. 4).
Рис. 4. Выполнение теста памяти
В Windows Vista использовались правила назначения индексов производительности памяти в зависимости от объема установленной в системе памяти. В Windows 7 набор правил расширен — правила для Windows Vista и Windows 7 приведены в табл. 2.
Таблица 2. Индексы производительности памяти для Windows Vista и Windows 7
Индекс |
Описание |
До 1.0 |
Общий объем памяти <= 256 Мбайт |
До 2.0 |
Общий объем памяти <= 500 Мбайт (51210 Мбайт) |
До 2.9 |
Общий объем памяти <= 512 Мбайт |
До 3.5 |
Общий объем памяти < 704 Мбайт (76864 Мбайт) |
До 3.9 |
Общий объем памяти < 944 Мбайт (1 Гбайт80 Мбайт) |
До 4.5 |
Общий объем памяти < 1,5 Гбайт |
До 5.5 |
Общий объем памяти < 3 Гбайт |
До 5.9 |
Общий объем памяти < 4 Гбайт (только для 64битных систем) |
Диск
Тестирование производительности диска в Windows Vista проводилось на основе теста последовательной записи. Этого было достаточно для базовой проверки механических дисков, но с появлением SSD-дисков потребовалось расширить набор тестов. В Windows 7 были добавлены следующие тесты:
- случайное чтение всего диска;
- проверка сброса данных на диск;
- проверка производительности гибридных устройств с NVRAM (рис. 5).
Общие правила присвоения индексов производительности в Windows 7 представлены в табл. 3.
Таблица 3. Индексы производительности жестких дисков в Windows 7
Индекс |
Описание |
2.93.9 |
Системы с низкой скоростью записи буферов на диск независимо от результатов выполнения других тестов |
5.05.9 |
Диски с хорошим последовательным чтением и хорошей скоростью записи буферов на диск |
6.06.5 |
Диски с высокой скоростью или SSDдиски |
7.07.5 |
Только для SSDдисков |
7.67.9 |
Зарезервировано |
Рис. 5. Выполнение теста диска
Графическая подсистема
Тестирование графической подсистемы осуществляется проверкой функциональных возможностей видеокарты для поддержки Desktop Window Manager (DWM). В наше время многие графические карты оптимизированы для игровых сценариев, при том что бизнес-приложения не имеют столь высоких требований, как компьютерные игры. Кроме того, большинство индустриальных тестов неприменимо для тестирования бизнес-сценариев.
Таким образом, включение в состав измерения системы теста выполнения бизнес-сценариев (рис. 6) позволяет получить индекс графической подсистемы относительно DWM и, в частности, ответить на такой популярный вопрос: «Почему я не могу включить подсистему Aero?»
Рис. 6. Тестирование графической подсистемы
В Windows 7 DWM использует функции DirectX10, поэтому тестирование графической подсистемы теперь поддерживает тесты для DirectX10. Результаты этих тестов показывают, насколько система поддерживает композитный рабочий стол (desktop composition) и используется DWM для принятия решения о включении или отключении подсистемы Aero. Результаты могут быть распределены по группам, представленным в табл. 4.
Таблица 4. Индексы производительности графической подсистемы в Windows 7
Индекс |
Описание |
<2.0 |
Система не поддерживает композитный рабочий стол |
2.02.9 |
Базовая поддержка композитного рабочего стола |
3.03.9 |
Поддержка композитного рабочего стола с разрешением |
4.04.9 |
Поддержка композитного рабочего стола с разрешением до 1600х1200 на двух мониторах |
>5.0 |
Мультимониторная поддержка |
>6.0 |
Мультимониторная поддержка и возможность воспроизведения видео с высоким разрешением |
Игровая графика
Тестирование игровой графики позволяет измерить производительность системы при выполнении сценариев трехмерных игр. Цели проверки заключаются в нагрузочном тестировании графической подсистемы и проверке корректной работы драйверов графических карт. Выполняются следующие четыре основных теста: Batch Limited — отрисовка большого количества небольших объектов с целью проверки драйвера, Fill-rate Memory Limited — проверка возможности читать и записывать данные из памяти, Fill-rate Shader Limited — текстурная отрисовка, проверка вычислительных возможностей и Fill-rate Shader Limited — проверка вычислительных возможностей.
Также для проверки игровой графики выполняются различные мультимедийные тесты, включающие проверку воспроизведения видео и использования различных декодеров (только в Windows 7 — тест MediaEx, рис. 7).
Рис. 7. Тестирование игровой графики
Результаты тестирования графических возможностей разделяются на несколько групп — для адаптеров с поддержкой DirectX 9 индекс ограничивается числом 5.9, DirectX 10 требует более высокого индекса. Результаты могут быть распределены по группам согласно табл. 5.
Таблица 5. Индексы, характеризующие мультимедийные возможности
Индекс |
Описание |
<2.0 |
Система не поддерживает DirectX 9/DirectX 10 |
2.05.9 |
Присваивается в тех случаях, когда тесты для DirectX 10 показали более низкую, по сравнению с тестами для DirectX 9, производительность |
4.04.9 |
Поддержка DirectX 10 с FPS 2030 в режиме Windows при включенной композиции рабочего стола. В эту категорию попадают адаптеры, которые не поддерживают режим 1280х1024 с нормальным FPS, но нормально работают в режимах 800х600 и 1024х768 |
5.05.9 |
Основная производительность для DirectX 10, FPS 2040 при разрешении 1280х1024 |
6.06.9 |
Отличная производительность для DirectX 10, FPS 4050 при разрешении 1280х1024 |
>7.0 |
Исключительная производительность для DirectX 10, FPS >60 при разрешении 1280х1024 |
При измерении мультимедийных возможностей учитывается поддержка воспроизведения видеоклипов разного формата: WMV, MPEG-2 и H.264 в режиме High Definition. Результаты могут быть распределены по группам согласно табл. 6.
Таблица 6. Индексы, характеризующие поддержку воспроизведения видеоклипов
Индекс |
Описание |
<5.0 |
Система не поддерживает воспроизведение HDвидео |
5.0+ |
Система поддерживает базовое воспроизведение HDвидео |
6.0+ |
Система поддерживает воспроизведение HDвидео |
Программные интерфейсы WinSAT
Начиная с операционной системы Windows Vista у разработчиков появилась возможность использовать программные интерфейсы WinSAT для запуска отдельных тестов и получения результатов уже проведенных тестов. Программные интерфейсы описаны в заголовочном файле WinSATComInterfaceI.h и реализованы в библиотеке WinSATAPI.dll (%windir%\system32\WinSATAPI.dll).
Для запуска формального измерения системы служит метод InitialFormalAssessment интерфейса IInitiateWinSATAssessment. Результаты формального измерения сохраняются в стандартной папке и могут быть затем извлечены и обработаны. Для получения уведомлений о прогрессе измерения системы или о завершении процесса применяется интерфейс IWinSATInitiateEvents.
Для получения результатов общего тестирования системы и ее отдельных компонентов используются соответствующие программные интерфейсы. Общий индекс системы может быть получен с помощью метода IQueryRecentWinSATAssessment::get_Info, возвращающего интерфейс IProvideWinSATResultsInfo. Затем вызывается метод IProvideWinSATResultsInfo::get_SystemRating, возвращающий общий индекс системы.
Для получения индекса отдельных компонентов сначала вызывается метод IQueryRecentWinSATAssessment::get_Info, возвращающий интерфейс IProvideWinSAT-ResultsInfo. Затем для каждого компонента вызывается метод IProvideWinSATAssessmentInfo::get_Score.
Для доступа к информации, сохраненной в XML-файлах (посредством опции командной строки –xml), следует применять метод IQueryRecentWinSATAssessment::get_XML, возвращающий детали общего измерения системы, и метод IQueryAllWinSATAssessments::get_AllXML для доступа к результатам для отдельных компонентов. XML-схема описана в MSDN по адресу: http://msdn.microsoft.com/en-us/library/aa969210(VS.85).aspx.
В листинге показано, как с помощью программных интерфейсов WinSAT выполнить измерение системы и получить уведомление о прогрессе выполнения тестов:
#include <windows.h>
#include <stdio.h>
#include <conio.h> // для kbhit()
#include <winsatcominterfacei.h>
#pragma comment(lib, «ole32.lib»)
// Класс, реализующий IWinSATInitiateEvents. Используется
// для получения информации о прогрессе и завершении тестов
class CWinSATCallbacks : public IWinSATInitiateEvents
{
LONG m_lRefCount;
public:
CWinSATCallbacks() {m_lRefCount = 1;};
~CWinSATCallbacks() {};
HRESULT __stdcall QueryInterface(REFIID riid, LPVOID *ppvObj);
ULONG __stdcall AddRef();
ULONG __stdcall Release();
HRESULT __stdcall WinSATComplete(HRESULT hr, LPCWSTR description);
HRESULT __stdcall WinSATUpdate(UINT currentTick, UINT tickTotal,
LPCWSTR currentState);
};
HRESULT CWinSATCallbacks::QueryInterface(REFIID riid, LPVOID* ppvObj)
{
if (riid == __uuidof(Iunknown) ||
riid == __uuidof(IWinSATInitiateEvents))
{
*ppvObj = this;
}
else
{
*ppvObj = NULL;
return E_NOINTERFACE;
}
AddRef();
return NOERROR;
}
ULONG CWinSATCallbacks::AddRef()
{
return InterlockedIncrement(&m_lRefCount);
}
ULONG CWinSATCallbacks::Release()
{
ULONG ulCount = InterlockedDecrement(&m_lRefCount);
if(0 == ulCount)
{
delete this;
}
return ulCount;
}
// Вызывается при завершении работы WinSAT или возникновении ошибки
HRESULT CWinSATCallbacks::WinSATComplete(HRESULT hr, LPCWSTR description)
{
if (SUCCEEDED(hr))
{
wprintf(L»\n*** %s», description);
}
else
{
wprintf(L»\n*** Ошибка выполнения. Код 0x%x (%s)\n»,
hr, description);
}
return S_OK;
}
// Вызывается для отображения прогресса
HRESULT CWinSATCallbacks::WinSATUpdate(UINT currentTick, UINT tickTotal, LPCWSTR currentState)
{
If (tickTotal > 0)
{
wprintf(L»\n*** Процесс выполнения: %u%%\n», 100*currentTick/tickTotal);
wprintf(L»*** Выполняемый тест: %s\n\n», currentState);
}
return S_OK;
}
void main(void)
{
HRESULT hr = S_OK;
IInitiateWinSATAssessment* pAssessment = NULL;
CWinSATCallbacks* pCallbacks = NULL;
CoInitializeEx(NULL, COINIT_APARTMENTTHREADED);
hr = CoCreateInstance(__uuidof(CInitiateWinSAT),
NULL,
CLSCTX_INPROC_SERVER,
__uuidof(IInitiateWinSATAssessment),
(void**)&pAssessment);
if (FAILED(hr))
{
wprintf(L»Ошибка создания экземпляра IInitiateWinSATAssessment.
Код 0x%x.\n», hr);
goto cleanup;
}
wprintf(L»Выполнение тестирования.\n»);
pCallbacks = new CWinSATCallbacks();
if (NULL == pCallbacks)
{
wprintf(L» Ошибка создания экземпляра CWinSATCallbacks.\n»);
goto cleanup;
}
hr = pAssessment->InitiateFormalAssessment(pCallbacks, NULL);
if (FAILED(hr))
{
wprintf(L»Ошибка InitiateFormalAssessment. Код 0x%x.\n», hr);
goto cleanup;
}
while (!_kbhit())
Sleep(10);
cleanup:
if (pAssessment)
pAssessment->Release();
if (pCallbacks)
pCallbacks->Release();
CoUninitialize();
}
В листинге показан пример использования программных интерфейсов WinSAT из управляемого кода на языке C#:
Namespace WinSATDemo
{
class Program
{
[STAThread]
static void Main()
{
CQueryWinSATClass q = new CQueryWinSATClass();
if (q.Info.AssessmentState ==
WINSAT_ASSESSMENT_STATE.WINSAT_ASSESSMENT_STATE_VALID
|| q.Info.AssessmentState ==
WINSAT_ASSESSMENT_STATE.WINSAT_ASSESSMENT_STATE_INCOHERENT_WITH_HARDWARE)
{
string format = «{0,-18} {1,-56} {2:N1}»;
string seperator = String.Format(format, new string(‘-‘, 18), new
string(‘-‘, 56), new string(‘-‘, 3));
Console.WriteLine(«{0} on {1}», q.Info.RatingStateDesc,
q.Info.AssessmentDateTime);
Console.WriteLine();
Console.WriteLine(format, «Категория», «Описание», «Индекс»);
Console.WriteLine(seperator);
Ienumerator e =
Enum.GetValues(typeof(WINSAT_ASSESSMENT_TYPE)).GetEnumerator();
while (e.MoveNext())
{
IProvideWinSATAssessmentInfo I =
q.Info.GetAssessmentInfo((WINSAT_ASSESSMENT_TYPE)e.Current);
Console.WriteLine(format, i.Title, i.Description, i.Score);
}
Console.WriteLine(seperator);
Console.WriteLine(format, «Базовый индекс»,
«Определенный как низший в наборе», q.Info.SystemRating);
}
}
}
}
Доступ к данным WinSAT через WMI
Для доступа к основным данным WinSAT через Windows Management Instrumentation (WMI) следует использовать класс Win32_WinSAT, который описывается следующей структурой:
class Win32_WinSAT
{
string TimeTaken;
real32 WinSPRLevel;
uint32 WinSATAssessmentState;
real32 MemoryScore;
real32 CPUScore;
real32 DiskScore;
real32 D3Dscore;
real32 GraphicsScore;
};
Описание свойств класса Win32_WinSAT приведено в табл. 7.
Таблица 7. Описание свойств класса Win32_WinSAT
Свойство |
Описание |
CPUScore |
Индекс производительности центрального процессора |
D3Dscore |
Индекс для трехмерной (игровой) графики |
DiskScore |
Индекс для операций последовательного чтения с диска |
GraphicsScore |
Индекс графической подсистемы компьютера |
MemoryScore |
Индекс производительности оперативной памяти |
TimeTaken |
При обращении к характеристикам WinSAT необходимо использовать значение MostRecentAssessment |
WinSATAssessmentState |
Одно из следующих значений: 0 — StateUnknown; 1 — Valid; 2 — IncoherentWithHardware; 3 — NoAssessmentAvailable; 4 — Invalid |
WinSPRLevel |
Базовый индекс для компьютера |
В PowerShell выполнение команды
PS>Get-WmiObject Win32_WinSAT
отображает данные, показанные на рис. 8.
Рис. 8. Отображение данных с помощью команды Get-WmiObject Win32_WinSAT
***
В этой и двух предыдущих статьях мы ознакомились с рядом утилит, входящих в состав операционной системы и позволяющих получить основные характеристики системы, включая ее настройки, данные о производительности и т.п. Мы также получили представление о базовых возможностях скриптовой программы PowerShell и рассмотрели, как работает утилита WinSAT, вычисляющая производительность системы.
В следующей публикации мы поговорим об обеспечении стабильной работы приложений, приведем ряд рекомендаций и обсудим различные механизмы, предоставляемые операционной системой.
КомпьютерПресс 03’2011