Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Копия Диплом end 2.docx
Скачиваний:
8
Добавлен:
26.09.2019
Размер:
2.03 Mб
Скачать

3.4. Сравнение структур по временным характеристикам

Для систем реального времени важным фактором является не только правильность выполнения операций, но и время их выполнения, причём, если для систем мягкого реального времени важно среднее время выполнения операций, то для систем жёсткого реального времени – максимальное время выполнения операций. Таким образом, необходимо провести измерения времени выполнения операций чтения и записи для разработанных структур и построить графики зависимости времени выполнения операция от числа потоков. Для этого программа тестирования была изменена с учётом следующих требований:

  1. Запуск методов неблокирующего подсчёта ссылок и опасных указателей поочерёдно.

  2. Измерение времени выполнения операций записи и чтения.

  3. Задание произвольного числа операций, время выполнения которых измеряется.

  4. Запись в файл результатов измерения операций записи и чтения для методов неблокирующего подсчёта ссылок и опасных указателей.

Также необходимо отметить, что все потоки должны запускаться одновременно, а также одновременно завершаться, так как измеряемое время будет зависеть от числа одновременно работающих потоков. Сравнение будет проводиться для метода неблокирующего подсчёта ссылок и метода опасных указателей для известного числа потоков, так как операции записи и чтения идентичны. Было решено рассмотреть один, три, пять и семь потоков читающих потоков, причём взаимодействующие также с массивом единичной длины для увеличения нагрузки. При построении графиков использовалось среднее и максимальное время выполнения одной операции чтения. Было выполнено по десять запусков для каждого варианта. Пример запуска представлен на рис. 3.3, результат – в листингах 3.5 и 3.6. Итоговые результаты представлены в таблице 3.3 и на рис. 3.4.

Рис. 3.3. Пример запуска программы сравнения методов

Листинг 3.5. Результат запуска программы сравнения методов для одного потока для операции чтения

HP known threads

All time = 38249797, Average time for one operation = 38.

All time = 49071218, Average time for one operation = 49.

All time = 38288713, Average time for one operation = 38.

All time = 51675186, Average time for one operation = 51.

All time = 56317473, Average time for one operation = 56.

All time = 54771751, Average time for one operation = 54.

All time = 55610155, Average time for one operation = 55.

All time = 38313292, Average time for one operation = 38.

All time = 38396244, Average time for one operation = 38.

All time = 56585107, Average time for one operation = 56.

HP known threads end

-----------------------------------------

LC

All time = 72600128, Average time for one operation = 72.

All time = 69639428, Average time for one operation = 69.

All time = 54617452, Average time for one operation = 54.

All time = 52445999, Average time for one operation = 52.

All time = 72555067, Average time for one operation = 72.

All time = 51173714, Average time for one operation = 51.

All time = 66033198, Average time for one operation = 66.

All time = 63014806, Average time for one operation = 63.

All time = 52515639, Average time for one operation = 52.

All time = 63127458, Average time for one operation = 63.

LC end

Листинг 3.6. Результат запуска программы сравнения методов для одного потока для операции записи

HP known threads

All time = 350980157, Average time for one operation = 350.

All time = 382210881, Average time for one operation = 382.

All time = 533933688, Average time for one operation = 533.

All time = 316099509, Average time for one operation = 316.

All time = 359319991, Average time for one operation = 359.

All time = 335807808, Average time for one operation = 335.

All time = 333108598, Average time for one operation = 333.

All time = 537831790, Average time for one operation = 537.

All time = 521164753, Average time for one operation = 521.

All time = 339570386, Average time for one operation = 339.

HP known threads end

-----------------------------------------

LC

All time = 324355195, Average time for one operation = 324.

All time = 316458288, Average time for one operation = 316.

All time = 514269426, Average time for one operation = 514.

All time = 512787881, Average time for one operation = 512.

All time = 332048303, Average time for one operation = 332.

All time = 515198293, Average time for one operation = 515.

All time = 318821933, Average time for one operation = 318.

All time = 315950672, Average time for one operation = 315.

All time = 511196074, Average time for one operation = 511.

All time = 300171538, Average time for one operation = 300.

LC end

Таблица 3.3

Результаты сравнения структур по временным характеристикам

 

 

Миллион операций

Одна операция

Потоки

 

 

макс, ns

сред, ns

макс, ns

сред, ns

Чтение

HP*

56585107

47727894

56

47

1

77628504

54897512

77

54

3

106289225

55805852

106

55

5

156406912

60533960

156

60

7

LC**

72600128

61772289

72

61

1

343743972

215129017

343

215

3

560954469

293326453

560

293

5

683642415

338068344

683

338

7

Запись

537831790

398564258

537

398

1

794820055

655848363

794

655

3

1608631875

866063324

1608

865

5

1951584894

1252959897

1951

1252

7

HP* – метод опасных указателей; LC** – метод неблокирующего подсчёта ссылок.

Рис. 3.4. График зависимости времени выполнения одной операции

чтения от количества читающих потоков

Полученные результаты показывают, что метод опасных указателей обладает большей производительностью, что особенно заметно при увеличении количества потоков.