Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
mlr_EVM v ASUTP_3.0.doc
Скачиваний:
5
Добавлен:
10.02.2016
Размер:
201.73 Кб
Скачать

Определение производительности на арифметических и тригонометрических операциях

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

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

Пример программной реализации теста производительности на операциях деления представлен ниже:

doublex= 123456789;

int i;

LARGE_INTEGER Start, Stop, Freq;

QueryPerformanceFrequency( &Freq );

QueryPerformanceCounter( &Start );

for ( i = 0; i < 1000000; i++ )

{

x = x / 1.1;

}

QueryPerformanceCounter( &Stop );

double dSpeed= double ( Stop.QuadPart - Start.QuadPart ) / Freq.QuadPart;

sprintf(szString,"1000000 операций деления выполняется за %gc",dSpeed);

Для других тестов необходимо в тело цикла поставить соответствующую операцию.

Ход работы

1. Разработать пользовательский интерфейс.

2. Разработать программный код для определения тактовой частоты процессора.

3. Разработать программный код для определения времени затрачиваемого на выполнение 1000000 арифметических операций сложения, деления, а также на выполнение 1000000 тригонометрических операций;

4. Используя разработанное ПО, провести исследование производительности различных CPU.

5. Оформить протокол.

Лабораторная работа № 3. Определение производительности сети

Цель работы: определение скорости обмена данными по сети.

Задачи:

— Разработать программный код для определения скорости передачи данных по сети.

Описание модуля сетевого взаимодействия

Для выполнения данной лабораторной работы студентам выдается готовый модуль сетевого взаимодействия (файлы socketnet.h, socketnet.cpp). Модуль реализован по технологии клиент-сервер. Работа с сетью осуществляется посредством 4х функций:

void InitClientSocket( char *pServerName ); // создать клиент

void InitServerSocket(); // создать сервер

void SendToServer( char *pData, int nSize ); // послать данные серверу

void SendToClient( char *pData, int nSize ); // послать данные клиенту

Для обработки принятых данных используются потоки. Соответствующие функции потоков:

static DWORD WINAPI ClientThreadFunc(LPVOID lpParam);

static DWORD WINAPI ServerThreadFunc(LPVOID lpParam);

В общем случае сетевой модуль позволяет связать по сети две программы запущенных на двух различных компьютерах. Но также программы можно запускать и на одном компьютере.

Алгоритм установления связи между программами следующий:

1. Вызвать функцию создания сервера. При этом программа-сервер входит в режим ожидания подключения клиента и не реагирует на любые другие действия. Визуально программа «висит».

2. Вызвать функцию создания клиента. При этом программе-клиенту необходимо указать имя компьютера, на котором запущена программа-сервер. После этого программа-сервер выйдет из режима «висит», а на экране появятся сообщения о том, что сервер и клиент подключены.

3. После этого программы могут в произвольном порядке обмениваться данными посредством функций SendToServer()иSendToClient().

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]