2 45.000 0.500
3 40.000 1.000
4 35.000 1.500
5 30.000 2.000
6 25.000 2.500
7 20.000 3.000
8 15.000 3.500
9 10.000 4.000
10 5.000 4.500
11 0.000 5.000
12 5.000 5.500
13 10.000 6.000
14 15.000 6.500
15 20.000 7.000
16 25.000 7.500
17 30.000 8.000
18 35.000 8.500
19 40.000 9.000
Get pulse Disconnect
2.3. Тест 3
Test3.in
10 9 50
0 50
1 30
2 15
3 10
4 8
5 10
6 15
7 30
8 50
9 30
Клиент:
Рис.2.3. Результат выполнения теста 3
Сервер:
./inter LOCAL channel
Server receive 10
h = 0.500000
X[0] = 0.000 Y[0] = 50.000
X[1] = 1.000 Y[1] = 30.000
X[2] = 2.000 Y[2] = 15.000
X[3] = 3.000 Y[3] = 10.000
X[4] = 4.000 Y[4] = 8.000
X[5] = 5.000 Y[5] = 10.000
X[6] = 6.000 Y[6] = 15.000
X[7] = 7.000 Y[7] = 30.000
X[8] = 8.000 Y[8] = 50.000
X[9] = 9.000 Y[9] = 30.000
1 50.000 0.000
2 40.000 0.500
3 30.000 1.000
4 22.500 1.500
5 15.000 2.000
6 12.500 2.500
7 10.000 3.000
8 9.000 3.500
9 8.000 4.000
10 9.000 4.500
11 10.000 5.000
12 12.500 5.500
13 15.000 6.000
14 22.500 6.500
15 30.000 7.000
16 40.000 7.500
17 50.000 8.000
18 40.000 8.500
19 30.000 9.000
Get pulse Disconnect
2.4. Тест 4
В этом тесте мы рисуем окружность, т.к. Х должен монотонно возрастать, рисовать будем в 2 этапа, сначала нарисуем нижнюю полуокружность, затем не стирая старую интерполяцию, нарисуем верхнюю полуокружность.
test_r1.in ( нижняя полуокружность )
11 2 2
0 1
0.2 0.4
0.4 0.2
0.6 0.0835
0.8 0.0202
1.0 0
1.2 0.0202
1.4 0.0835
1.6 0.2
1.8 0.4
2.0 1
test_r2.in ( верхняя полуокружность )
11 2 2
0 1
0.2 1.6
0.4 1.8
0.6 1.9165
0.8 1.9798
1.0 2
1.2 1.9798
1.4 1.9165
1.6 1.8
1.8 1.6
2.0 1
Клиент:
Рис.2.4. Результат выполнения теста 4
3. Временной анализ приложения
Клиент читает данные для интерполяции из файла, передаёт на сервер для обработки, принимает данные и после этого ждёт 200мс, после чего всё повторяется сначала.
Продолжительность временного анализа – 3с.
Рис.3.1. Timeline
На рис.3.1. фиолетовым показано время, когда клиент спит, зелёным – когда выполняется. Мы видим, что чтение, передача, интерполяция и приём данных занимают мало времени ( подробнее на рис.5.1. ), выполнения всех этих действий в нашем масштабе выглядят как тонкие палочки и мы не можем различить время посылки данных клиентом и приёма сообщения от сервера. Так же видим, что в одном из случаев проходит долгое время между началом выполнения клиента и посылке сообщения серверу, около 267 мс. Это можно объяснить тем, что в этот момент окно развернули, и оно начало перерисовку, которая может занимать значительное время.
Рис.3.2. System Activity
За 3 секунды, которые мы проводили профайлинг, как видно из рис.3.1. клиент сделал 13 запросов на интерполяцию, при этот была одна перерисовка клиента. При этом, как мы видим на рис.3.2., общее время выполнения сервера 506 мкс, а общее выполнение клиента 3мс. При этом, исходя из рис.3.1., большая часть времени работы клиента ушла на перерисовку окна.
4. Структура и спецификация
Рис.4.1. Алгоритм взаимодействия с сервером
Рис.4.2. Алгоритм работы клиента
Button1_click.c
/* Standard headers */
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.