Графическое клиент-серверное приложение на примере интерполяции. Кусочно-линейная интерполяция, страница 3

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 */