Skip to content

AlexDim1/concurrent-votes-counter

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

16 Commits
 
 
 
 
 
 
 
 

Repository files navigation

Паралелна обработка на гласове от избори

Задание

Създайте многонишкова програма за прочитането на резултатите от гласуване за парламент от файл, представляващ единствен ресурс и сумирането на резултатите от него. Резултатите от извършването на сумирането от всяка отделна нишка трябва да бъдат също сумирани и изведени, след като всяка от нишките е завършила изпълнението си.

Програмата извежда броя на гласовете за всяка партия (по име) и използва Бариера поради конкурентното четене на файла/овете и обработката на резултата от нишките.

Файлова архитектура на програмата:

concurrent-votes-counter.src
|
+ - main
    |    
    + - java.com.pp.concurrentVotesCounter
    |   |
    |   + - threads
    |   |   |
    |   |   + - CountingThread.java (Държанието на паралелна нишка)
    |   |
    |   + - util
    |   |   |
    |   |   + - CsVFileReader.java (Файл за четене на csv файлове)
    |   |
    |   + - ConcurrentVotesCounterApplication.java (Начално място на програмата
    |                                                и държанието на резултатната нишка от бариерата)
    + - resources
        |
        + - cik_parties_02.10.2022.csv (Файл с информация за партиите)
        |
        + - votes_02.10.2022.csv (Файл с данни от гласуванията през 02.10.2022г.)

Файлове с данни

  • cik_parties_02.10.2022.csv

    • Всеки ред от файла представя една партия/коалиция, регистрирана в ЦИК, като разделителят между полетата е ;
      • Полета:
        1. Номер
        2. Име
  • votes_02.10.2022.csv

    • Всеки ред от файла представя действителните гласове от един секционен протокол, като разделителят между полетата е ;
      • Полета:
        1. Нечетни : Номер на партия
        2. Четни : Брой гласове

Файловете са предварително обработени, за да се премахне излишна информация.

Тестове

Тестовете са на различен брой нишки като са проведени 5 пъти за всеки брой.

  • С 1 нишка:

    • 245 ms
    • 272 ms
    • 259 ms
    • 262 ms
    • 251 ms
    • Средно : 257,80 ms
  • С 2 нишки:

    • 253 ms
    • 280 ms
    • 251 ms
    • 275 ms
    • 288 ms
    • Средно : 269,40 ms
  • С 3 нишки:

    • 318 ms
    • 276 ms
    • 245 ms
    • 324 ms
    • 248 ms
    • Средно : 282,20 ms
  • С 4 нишки:

    • 256 ms
    • 250 ms
    • 247 ms
    • 278 ms
    • 251 ms
    • Средно : 256,40 ms
  • С 8 нишки:

    • 258 ms
    • 270 ms
    • 265 ms
    • 257 ms
    • 262 ms
    • Средно : 262,40 ms
  • С 16 нишки:

    • 257 ms
    • 301 ms
    • 252 ms
    • 268 ms
    • 262 ms
    • Средно : 268,00 ms

Извод

Използваният файл има 12 000 реда и е прекалено малък, следователно по-малко нишки се справят по-добре от повече.

Releases

No releases published

Packages

No packages published

Languages