Skip to content

Releases

v2.0 release

Choose a tag to compare

@nojusta nojusta released this 30 Apr 11:16
3628b00

v2.0

Diegimo instrukcija

  • Atsisiųskite projekto kodą iš GitHub naudodami git clone komandą su projekto URL:
git clone https://github.com/nojusta/LabDarbas_nr2
  • Pereikite į projekto katalogą naudodami cd komandą. Pavyzdžiui:
cd *projekto vieta kompiuteryje*
  • Sukurkite Makefile su reikiamomis taisyklėmis. Jūsų Makefile turėtų atrodyti maždaug taip (Unix OS atveju):
# Kompiliatorius
CXX = g++

# Kompiliatoriaus parametrai
CXXFLAGS = -std=c++14 -O3 -mmacosx-version-min=14.3

# Vykdomo failo pavadinimas
TARGET = v2

# Source failai
SRCS = main.cpp functionality.cpp input.cpp calculations.cpp student.cpp

# Object failai
OBJS = $(SRCS:.cpp=.o)

# Google Test biblioteka
GTEST = /usr/local/lib/libgtest.a /usr/local/lib/libgtest_main.a

# Testuojami failai
TEST_SRCS = student_test.cpp

# Testuojami objekto failai
TEST_OBJS = $(TEST_SRCS:.cpp=.o)

# Testuojamo failo pavadinimas
TEST_TARGET = student_test

# Taisyklė programa susieti
$(TARGET): $(OBJS)
	$(CXX) $(CXXFLAGS) -o $(TARGET) $(OBJS)

# Rule to build the test executable
$(TEST_TARGET): student.o $(TEST_OBJS)
	$(CXX) $(CXXFLAGS) -o $(TEST_TARGET) student.o $(TEST_OBJS) $(GTEST)

# Taisyklė kompiliuoti failus
.cpp.o:
	$(CXX) $(CXXFLAGS) -c $<  -o $@

# Taisyklė išvalyti tarpinius failus
clean:
	$(RM) $(OBJS) $(TEST_OBJS)

# Taisyklė išvalyti viską
distclean: clean
	$(RM) $(TARGET) $(TEST_TARGET)
  • Sukompiliuokite programą naudodami make komandą:
make

Tada gausite tokį rezultatą:

make_terminal

  • Paleiskite programą naudodami šią komandą:
./v2

Valymo instrukcija

  • Jei norite išvalyti sukompiliuotus failus, galite naudoti šias make komandas:
make clean
make distclean

Naudojimosi instrukcija

  • Paleiskite programą naudodami šią komandą:
./v2
  • Programa pateiks meniu su įvairiomis funkcijomis. Pasirinkite funkciją įvedę atitinkamą numerį ir spauskite Enter.

Menu

Programos funkcijos:

  • Nuskaito duomenis iš naudotojo arba failo ir patikrina ar jie yra teisingi (naudojant išimčių valdymą).
  • Duoda naudotojui galimybė pasirinkti du galutinio balo skaičiavimo būdus - skaičiuojant vidurkį ar medianą.
  • Leidžia pasirinkti 5 skirtingus būdus įvesti, nuskaityti ar sugeneruoti duomenis.
  • Dinamiškai paskiria atmintį pagal įvesta / nuskaitytą duomenų kiekį.
  • Atidaro testavimo failus ir apskaičiuoja laiką, kurį praleidžia apdorojant duomenis iš failų.
  • Visi pranešimai išvedami lietuvių kalbą.
  • Projektas išskaidytas į kelis failus (.h ir .cpp).
  • Generuoja penkis atsitiktinius studentų sąrašų failus, sudarytus iš: 1 000, 10 000, 100 000, 1 000 000, 10 000 000 įrašų
  • Atlieka tyrimus / testavimus su sugeneruotais failais.
  • Surūšiuoja studentus ir išveda į du naujus failus.
  • Yra 3 skirtingi konteinerio tipo pasirinkimai testavimui - vector, deque, list.
  • Yra 3 skirtingos strategijos duomenų skirstymui.
  • Naudojama klasė, saugojant studentų duomenis.
  • Galima testuoti visus "Rule of five" konstruktorius ir I/O operatorius.
  • Yra abstrakti klasė Person. Student klasė yra Person klasės išvestinė klasė.
  • DoxyGen sugeneruota HTML/TEX formato dokumentacija.
  • Atlikti unit testai su Google Test.
  • Norėdami baigti darbą su programa, pasirinkite atitinkamą skaičių.

Unit testai naudojant Google Test.

Šis projektas naudoja Google Test unit testavimui. Norėdami paleisti testus, sekite šiuos žingsnius:

  1. Sukurkite projektą naudodami make.
  2. Paleiskite testus su ./student_test.

Išvestis turėtų atrodyti maždaug taip:

Testavimo rezultatai

Klasės naudojami "Rule of five" ir I/O operatoriai.

"Rule of five" yra C++ programavimo kalbos konceptas, kuris apima penkis pagrindinius komponentus, reikalingus objektų valdymui: destruktorius, kopijavimo konstruktorius, kopijavimo priskyrimo operatorius, perkeliamasis konstruktorius ir perkeliamasis priskyrimo operatorius. Šiame projekte "Rule of five" yra taikomas Student klasei.

  1. Destruktorius: Šis komponentas naudojamas išvalyti Student objektą, kai jis nebereikalingas.

  2. Kopijavimo konstruktorius: Šis komponentas leidžia sukurti naują Student objektą, kuris yra identiškas esamam Student objektui.

  3. Kopijavimo priskyrimo operatorius: Šis operatorius leidžia priskirti vieno Student objekto vertę kitam Student objektui.

  4. Perkeliamasis konstruktorius: Šis komponentas leidžia "perkelti" Student objektą, o ne kopijuoti jį. Tai yra efektyvesnis būdas sukurti naują Student objektą, kai turime laikiną Student objektą, kurio mums nebereikia.

  5. Perkeliamasis priskyrimo operatorius: Šis operatorius leidžia "perkelti" vieno Student objekto vertę į kitą Student objektą, o ne kopijuoti ją.

Be to, šiame projekte yra naudojami įvesties (>>) ir išvesties (<<) operatoriai.

Įvesties operatorius (>>): Šis operatorius naudojamas nuskaitant duomenis iš įvesties srauto (pvz., std::cin ar std::istringstream) į Student objektą.

Išvesties operatorius (<<): Šis operatorius naudojamas rašant Student objektą į išvesties srautą (pvz., std::cout ar std::ostringstream).

Šie operatoriai leidžia lengvai ir efektyviai manipuliuoti Student objektais, nuskaitant duomenis iš įvesties srautų ir rašant juos į išvesties srautus.

Visiems konstruktoriams / operatoriams yra atlikti testai, siekiantys patikrinti ar visi jie veikia. Testus galima atlikti pasirinkus tai per meniu.

Programos sparta naudojant skirtingus kompiliatoriaus optimizavimo lygius

Testavimo sistemos parametrai:

  • Saugykla: 256 GB, Integruota NVMe SSD
  • Atmintis: 8 GB RAM
  • Procesorius: Apple M1

Be optimizavimo testavimas

Greitis(1mln.) Greitis(10mln.) Failo dydis
Struct 12.111s 130.058s 411kb
Klasė 11.358s 118.430s 404kb
Peržiūrėti

O0 Struct
Struktūros testavimo rezultatai

O0 Struct_exe
Struktūros failo dydis

O0 Klase
Klasės testavimo rezultatai

O0 Klase_exe
Klasės failo dydis

O1 optimizavimo lygio testavimas

Greitis(1mln.) Greitis(10mln.) Failo dydis
Struct 2.790s 30.391s 162kb
Klasė 11.489s 117.949s 147kb
  • Su struktūra greitesni testavimo rezultatai, naudojant šį optimizavimo raktą.
  • Struktūros ir klasių failų dydžiai mažesni, naudojant šį optimizavimo raktą.
Peržiūrėti

O1 Struct
Struktūros testavimo rezultatai

O1 Struct_exe
Struktūros failo dydis

O1 Klase
Klasės testavimo rezultatai

O1 Klase_exe
Klasės failo dydis

O2 optimizavimo lygio testavimas

Greitis(1mln.) Greitis(10mln.) Failo dydis
Struct 2.662s 30.459s 162kb
Klasė 2.767s 29.540s 147kb
  • Su klase greitesni testavimo rezultatai, naudojant šį optimizavimo raktą.
  • Struktūros ir klasių failų dydžiai išliko tokie patys, kaip su praeitu optimizavimo raktu.
Peržiūrėti

O2 Struct
Struktūros testavimo rezultatai

O2 Struct_exe
Struktūros failo dydis

O2 Klase
Klasės testavimo rezultatai

O2 Klase_exe
Klasės failo dydis

O3 optimizavimo lygio testavimas

Greitis(1mln.) Greitis(10mln.) Failo dydis
Struct 2.734s 28.984s 161kb
Klasė 2.738s 29.735s 162kb
  • Testavimo greičio rezultatai panašūs su praeitu optimizavimo raktu.
  • Failų dydžiai minimaliai pasikeitė.
Peržiūrėti

O3 Struct
Struktūros testavimo rezultatai

O3 Struct_exe
Struktūros failo dydis

O3 Klase
Klasės testavimo rezultatai

![O3 Klase_exe](https://github.com/nojusta/LabDarb...

Read more

v1.5 release

v1.5 release Pre-release
Pre-release

Choose a tag to compare

@nojusta nojusta released this 17 Apr 19:57
f69c59b

v1.5

Diegimo instrukcija

  • Atsisiųskite projekto kodą iš GitHub naudodami git clone komandą su projekto URL:
git clone https://github.com/nojusta/LabDarbas_nr2
  • Pereikite į projekto katalogą naudodami cd komandą. Pavyzdžiui:
cd *projekto vieta kompiuteryje*
  • Sukurkite Makefile su reikiamomis taisyklėmis. Jūsų Makefile turėtų atrodyti maždaug taip (Unix OS atveju):
# Kompiliatorius
CXX = g++

# Kompiliatoriaus parametrai
CXXFLAGS = -std=c++14 -O3

# Vykdymo failo pavadinimas
TARGET = v1_5

# Šaltinio failai
SRCS = main.cpp functionality.cpp input.cpp calculations.cpp student.cpp

# Objektų failai
OBJS = $(SRCS:.cpp=.o)

# Taisyklė programa susieti
$(TARGET): $(OBJS)
	$(CXX) $(CXXFLAGS) -o $(TARGET) $(OBJS)

# Taisyklė kompiliuoti šaltinio failus
.cpp.o:
	$(CXX) $(CXXFLAGS) -c $<  -o $@

# Taisyklė išvalyti tarpinius failus
clean:
	$(RM) $(OBJS)

# Taisyklė išvalyti viską
distclean: clean
	$(RM) $(TARGET)
  • Sukompiliuokite programą naudodami make komandą:
make

Tada gausite tokį rezultatą:

make_terminal

  • Paleiskite programą naudodami šią komandą:
./v1

Valymo instrukcija

  • Jei norite išvalyti sukompiliuotus failus, galite naudoti šias make komandas:
make clean
make distclean

Naudojimosi instrukcija

  • Paleiskite programą naudodami šią komandą:
./v1_5
  • Programa pateiks meniu su įvairiomis funkcijomis. Pasirinkite funkciją įvedę atitinkamą numerį ir spauskite Enter.

Menu

Programos funkcijos:

  • Nuskaito duomenis iš naudotojo arba failo ir patikrina ar jie yra teisingi (naudojant išimčių valdymą).
  • Duoda naudotojui galimybė pasirinkti du galutinio balo skaičiavimo būdus - skaičiuojant vidurkį ar medianą.
  • Leidžia pasirinkti 5 skirtingus būdus įvesti, nuskaityti ar sugeneruoti duomenis.
  • Dinamiškai paskiria atmintį pagal įvesta / nuskaitytą duomenų kiekį.
  • Atidaro testavimo failus ir apskaičiuoja laiką, kurį praleidžia apdorojant duomenis iš failų.
  • Visi pranešimai išvedami lietuvių kalbą.
  • Projektas išskaidytas į kelis failus (.h ir .cpp).
  • Generuoja penkis atsitiktinius studentų sąrašų failus, sudarytus iš: 1 000, 10 000, 100 000, 1 000 000, 10 000 000 įrašų
  • Atlieka tyrimus / testavimus su sugeneruotais failais.
  • Surūšiuoja studentus ir išveda į du naujus failus.
  • Yra 3 skirtingi konteinerio tipo pasirinkimai testavimui - vector, deque, list.
  • Yra 3 skirtingos strategijos duomenų skirstymui.
  • Naudojama klasė, saugojant studentų duomenis.
  • Galima testuoti visus "Rule of five" konstruktorius ir I/O operatorius.
  • Yra abstrakti klasė Person, Student klase yra sios klasės išvestinė klasė.
  • Norėdami baigti darbą su programa, pasirinkite atitinkamą skaičių.

Klasės naudojami "Rule of five" ir I/O operatoriai.

"Rule of five" yra C++ programavimo kalbos konceptas, kuris apima penkis pagrindinius komponentus, reikalingus objektų valdymui: destruktorius, kopijavimo konstruktorius, kopijavimo priskyrimo operatorius, perkeliamasis konstruktorius ir perkeliamasis priskyrimo operatorius. Šiame projekte "Rule of five" yra taikomas Student klasei.

  1. Destruktorius: Šis komponentas naudojamas išvalyti Student objektą, kai jis nebereikalingas.

  2. Kopijavimo konstruktorius: Šis komponentas leidžia sukurti naują Student objektą, kuris yra identiškas esamam Student objektui.

  3. Kopijavimo priskyrimo operatorius: Šis operatorius leidžia priskirti vieno Student objekto vertę kitam Student objektui.

  4. Perkeliamasis konstruktorius: Šis komponentas leidžia "perkelti" Student objektą, o ne kopijuoti jį. Tai yra efektyvesnis būdas sukurti naują Student objektą, kai turime laikiną Student objektą, kurio mums nebereikia.

  5. Perkeliamasis priskyrimo operatorius: Šis operatorius leidžia "perkelti" vieno Student objekto vertę į kitą Student objektą, o ne kopijuoti ją.

Be to, šiame projekte yra naudojami įvesties (>>) ir išvesties (<<) operatoriai.

Įvesties operatorius (>>): Šis operatorius naudojamas nuskaitant duomenis iš įvesties srauto (pvz., std::cin ar std::istringstream) į Student objektą.

Išvesties operatorius (<<): Šis operatorius naudojamas rašant Student objektą į išvesties srautą (pvz., std::cout ar std::ostringstream).

Šie operatoriai leidžia lengvai ir efektyviai manipuliuoti Student objektais, nuskaitant duomenis iš įvesties srautų ir rašant juos į išvesties srautus.

Visiems konstruktoriams / operatoriams yra atlikti testai, siekiantys patikrinti ar visi jie veikia. Testus galima atlikti pasirinkus tai per meniu.

Programos sparta naudojant skirtingus kompiliatoriaus optimizavimo lygius

Testavimo sistemos parametrai:

  • Saugykla: 256 GB, Integruota NVMe SSD
  • Atmintis: 8 GB RAM
  • Procesorius: Apple M1

Be optimizavimo testavimas

Greitis(1mln.) Greitis(10mln.) Failo dydis
Struct 12.111s 130.058s 411kb
Klasė 11.358s 118.430s 404kb
Peržiūrėti

O0 Struct
Struktūros testavimo rezultatai

O0 Struct_exe
Struktūros failo dydis

O0 Klase
Klasės testavimo rezultatai

O0 Klase_exe
Klasės failo dydis

O1 optimizavimo lygio testavimas

Greitis(1mln.) Greitis(10mln.) Failo dydis
Struct 2.790s 30.391s 162kb
Klasė 11.489s 117.949s 147kb
  • Su struktūra greitesni testavimo rezultatai, naudojant šį optimizavimo raktą.
  • Struktūros ir klasių failų dydžiai mažesni, naudojant šį optimizavimo raktą.
Peržiūrėti

O1 Struct
Struktūros testavimo rezultatai

O1 Struct_exe
Struktūros failo dydis

O1 Klase
Klasės testavimo rezultatai

O1 Klase_exe
Klasės failo dydis

O2 optimizavimo lygio testavimas

Greitis(1mln.) Greitis(10mln.) Failo dydis
Struct 2.662s 30.459s 162kb
Klasė 2.767s 29.540s 147kb
  • Su klase greitesni testavimo rezultatai, naudojant šį optimizavimo raktą.
  • Struktūros ir klasių failų dydžiai išliko tokie patys, kaip su praeitu optimizavimo raktu.
Peržiūrėti

O2 Struct
Struktūros testavimo rezultatai

O2 Struct_exe
Struktūros failo dydis

O2 Klase
Klasės testavimo rezultatai

O2 Klase_exe
Klasės failo dydis

O3 optimizavimo lygio testavimas

Greitis(1mln.) Greitis(10mln.) Failo dydis
Struct 2.734s 28.984s 161kb
Klasė 2.738s 29.735s 162kb
  • Testavimo greičio rezultatai panašūs su praeitu optimizavimo raktu.
  • Failų dydžiai minimaliai pasikeitė.
Peržiūrėti

O3 Struct
Struktūros testavimo rezultatai

O3 Struct_exe
Struktūros failo dydis

O3 Klase
Klasės testavimo rezultatai

O3 Klase_exe
Klasės failo dydis

Konteinerių testavimas

Peržiūrėti

Testavimo sistemos parametrai:

  • Saugykla: 256 GB, Integruota NVMe SSD
  • Atmintis: 8 GB RAM
  • Procesorius: Apple M1

1 strategija

Naudojant Vector tipo konteinerius:

Failo dydis Skaitymo laikas Rūšiavimo laikas Skirstymo laikas Veikimo laikas
1 000 0.023s 0.004s 0.005s 0.033s
10 000 0.113s 0.018s 0.023s 0.155s
100 000 0.763s 0.188s 0.237s 1.189s
1 000 000 7.448s 2.105s 2.673s 12.227s
10 ...
Read more

v1.2

v1.2 Pre-release
Pre-release

Choose a tag to compare

@nojusta nojusta released this 17 Apr 11:37
d8b76fe

v1.2

Diegimo instrukcija

  • Atsisiųskite projekto kodą iš GitHub naudodami git clone komandą su projekto URL:
git clone https://github.com/nojusta/LabDarbas_nr1
  • Pereikite į projekto katalogą naudodami cd komandą. Pavyzdžiui:
cd *projekto vieta kompiuteryje*
  • Sukurkite Makefile su reikiamomis taisyklėmis. Jūsų Makefile turėtų atrodyti maždaug taip (Unix OS atveju):
# Kompiliatorius
CXX = g++

# Kompiliatoriaus parametrai
CXXFLAGS = -std=c++14

# Vykdymo failo pavadinimas
TARGET = v1

# Šaltinio failai
SRCS = main.cpp functionality.cpp input.cpp calculations.cpp

# Objektų failai
OBJS = $(SRCS:.cpp=.o)

# Taisyklė programa susieti
$(TARGET): $(OBJS)
    $(CXX) $(CXXFLAGS) -o $(TARGET) $(OBJS)

# Taisyklė kompiliuoti šaltinio failus
.cpp.o:
    $(CXX) $(CXXFLAGS) -c $<  -o $@

# Taisyklė išvalyti tarpinius failus
clean:
    $(RM) $(OBJS)

# Taisyklė išvalyti viską
distclean: clean
    $(RM) $(TARGET)
  • Sukompiliuokite programą naudodami make komandą:
make

Tada gausite tokį rezultatą:

make_terminal

  • Paleiskite programą naudodami šią komandą:
./v1

Valymo instrukcija

  • Jei norite išvalyti sukompiliuotus failus, galite naudoti šias make komandas:
make clean
make distclean

Naudojimosi instrukcija

  • Paleiskite programą naudodami šią komandą:
./v1
  • Programa pateiks meniu su įvairiomis funkcijomis. Pasirinkite funkciją įvedę atitinkamą numerį ir spauskite Enter.

Menu

Programos funkcijos:

  • Nuskaito duomenis iš naudotojo arba failo ir patikrina ar jie yra teisingi (naudojant išimčių valdymą).
  • Duoda naudotojui galimybė pasirinkti du galutinio balo skaičiavimo būdus - skaičiuojant vidurkį ar medianą.
  • Leidžia pasirinkti 5 skirtingus būdus įvesti, nuskaityti ar sugeneruoti duomenis.
  • Dinamiškai paskiria atmintį pagal įvesta / nuskaitytą duomenų kiekį.
  • Atidaro testavimo failus ir apskaičiuoja laiką, kurį praleidžia apdorojant duomenis iš failų.
  • Visi pranešimai išvedami lietuvių kalbą.
  • Projektas išskaidytas į kelis failus (.h ir .cpp).
  • Generuoja penkis atsitiktinius studentų sąrašų failus, sudarytus iš: 1 000, 10 000, 100 000, 1 000 000, 10 000 000 įrašų
  • Atlieka tyrimus / testavimus su sugeneruotais failais.
  • Surūšiuoja studentus ir išveda į du naujus failus.
  • Yra 3 skirtingi konteinerio tipo pasirinkimai testavimui - vector, deque, list.
  • Yra 3 skirtingos strategijos duomenų skirstymui.
  • Naudojama klasė, saugojant studentų duomenis.
  • Galima testuoti visus "Rule of five" konstruktorius ir I/O operatorius.
  • Norėdami baigti darbą su programa, pasirinkite atitinkamą skaičių.

Klasės naudojami "Rule of five" ir I/O operatoriai.

"Rule of five" yra C++ programavimo kalbos konceptas, kuris apima penkis pagrindinius komponentus, reikalingus objektų valdymui: destruktorius, kopijavimo konstruktorius, kopijavimo priskyrimo operatorius, perkeliamasis konstruktorius ir perkeliamasis priskyrimo operatorius. Šiame projekte "Rule of five" yra taikomas Student klasei.

  1. Destruktorius: Šis komponentas naudojamas išvalyti Student objektą, kai jis nebereikalingas.

  2. Kopijavimo konstruktorius: Šis komponentas leidžia sukurti naują Student objektą, kuris yra identiškas esamam Student objektui.

  3. Kopijavimo priskyrimo operatorius: Šis operatorius leidžia priskirti vieno Student objekto vertę kitam Student objektui.

  4. Perkeliamasis konstruktorius: Šis komponentas leidžia "perkelti" Student objektą, o ne kopijuoti jį. Tai yra efektyvesnis būdas sukurti naują Student objektą, kai turime laikiną Student objektą, kurio mums nebereikia.

  5. Perkeliamasis priskyrimo operatorius: Šis operatorius leidžia "perkelti" vieno Student objekto vertę į kitą Student objektą, o ne kopijuoti ją.

Be to, šiame projekte yra naudojami įvesties (>>) ir išvesties (<<) operatoriai.

Įvesties operatorius (>>): Šis operatorius naudojamas nuskaitant duomenis iš įvesties srauto (pvz., std::cin ar std::istringstream) į Student objektą.

Išvesties operatorius (<<): Šis operatorius naudojamas rašant Student objektą į išvesties srautą (pvz., std::cout ar std::ostringstream).

Šie operatoriai leidžia lengvai ir efektyviai manipuliuoti Student objektais, nuskaitant duomenis iš įvesties srautų ir rašant juos į išvesties srautus.

Visiems konstruktoriams / operatoriams yra atlikti testai, siekiantys patikrinti ar visi jie veikia. Testus galima atlikti pasirinkus tai per meniu.

Programos sparta naudojant skirtingus kompiliatoriaus optimizavimo lygius

Testavimo sistemos parametrai:

  • Saugykla: 256 GB, Integruota NVMe SSD
  • Atmintis: 8 GB RAM
  • Procesorius: Apple M1

Be optimizavimo testavimas

Greitis(1mln.) Greitis(10mln.) Failo dydis
Struct 12.111s 130.058s 411kb
Klasė 11.358s 118.430s 404kb
Peržiūrėti

O0 Struct
Struktūros testavimo rezultatai

O0 Struct_exe
Struktūros failo dydis

O0 Klase
Klasės testavimo rezultatai

O0 Klase_exe
Klasės failo dydis

O1 optimizavimo lygio testavimas

Greitis(1mln.) Greitis(10mln.) Failo dydis
Struct 2.790s 30.391s 162kb
Klasė 11.489s 117.949s 147kb
  • Su struktūra greitesni testavimo rezultatai, naudojant šį optimizavimo raktą.
  • Struktūros ir klasių failų dydžiai mažesni, naudojant šį optimizavimo raktą.
Peržiūrėti

O1 Struct
Struktūros testavimo rezultatai

O1 Struct_exe
Struktūros failo dydis

O1 Klase
Klasės testavimo rezultatai

O1 Klase_exe
Klasės failo dydis

O2 optimizavimo lygio testavimas

Greitis(1mln.) Greitis(10mln.) Failo dydis
Struct 2.662s 30.459s 162kb
Klasė 2.767s 29.540s 147kb
  • Su klase greitesni testavimo rezultatai, naudojant šį optimizavimo raktą.
  • Struktūros ir klasių failų dydžiai išliko tokie patys, kaip su praeitu optimizavimo raktu.
Peržiūrėti

O2 Struct
Struktūros testavimo rezultatai

O2 Struct_exe
Struktūros failo dydis

O2 Klase
Klasės testavimo rezultatai

O2 Klase_exe
Klasės failo dydis

O3 optimizavimo lygio testavimas

Greitis(1mln.) Greitis(10mln.) Failo dydis
Struct 2.734s 28.984s 161kb
Klasė 2.738s 29.735s 162kb
  • Testavimo greičio rezultatai panašūs su praeitu optimizavimo raktu.
  • Failų dydžiai minimaliai pasikeitė.
Peržiūrėti

O3 Struct
Struktūros testavimo rezultatai

O3 Struct_exe
Struktūros failo dydis

O3 Klase
Klasės testavimo rezultatai

O3 Klase_exe
Klasės failo dydis

Konteinerių testavimas

Peržiūrėti

Testavimo sistemos parametrai:

  • Saugykla: 256 GB, Integruota NVMe SSD
  • Atmintis: 8 GB RAM
  • Procesorius: Apple M1

1 strategija

Naudojant Vector tipo konteinerius:

Failo dydis Skaitymo laikas Rūšiavimo laikas Skirstymo laikas Veikimo laikas
1 000 0.023s 0.004s 0.005s 0.033s
10 000 0.113s 0.018s 0.023s 0.155s
100 000 0.763s 0.188s 0.237s 1.189s
1 000 000 7.448s 2.105s 2.673s 12.227s
10 000 000 74.810s 24.911s 31.783s 131.505s

...

Read more

v1.1 release

v1.1 release Pre-release
Pre-release

Choose a tag to compare

@nojusta nojusta released this 14 Apr 17:34
2604409

v1.1

Diegimo instrukcija

  • Atsisiųskite projekto kodą iš GitHub naudodami git clone komandą su projekto URL:
git clone https://github.com/nojusta/LabDarbas_nr1
  • Pereikite į projekto katalogą naudodami cd komandą. Pavyzdžiui:
cd *projekto vieta kompiuteryje*
  • Sukurkite Makefile su reikiamomis taisyklėmis. Jūsų Makefile turėtų atrodyti maždaug taip (Unix OS atveju):
# Kompiliatorius
CXX = g++

# Kompiliatoriaus parametrai
CXXFLAGS = -std=c++14

# Vykdymo failo pavadinimas
TARGET = v1

# Šaltinio failai
SRCS = main.cpp functionality.cpp input.cpp calculations.cpp

# Objektų failai
OBJS = $(SRCS:.cpp=.o)

# Taisyklė programa susieti
$(TARGET): $(OBJS)
    $(CXX) $(CXXFLAGS) -o $(TARGET) $(OBJS)

# Taisyklė kompiliuoti šaltinio failus
.cpp.o:
    $(CXX) $(CXXFLAGS) -c $<  -o $@

# Taisyklė išvalyti tarpinius failus
clean:
    $(RM) $(OBJS)

# Taisyklė išvalyti viską
distclean: clean
    $(RM) $(TARGET)
  • Sukompiliuokite programą naudodami make komandą:
make

Tada gausite tokį rezultatą:

make_terminal

  • Paleiskite programą naudodami šią komandą:
./v1

Valymo instrukcija

  • Jei norite išvalyti sukompiliuotus failus, galite naudoti šias make komandas:
make clean
make distclean

Naudojimosi instrukcija

  • Paleiskite programą naudodami šią komandą:
./v1
  • Programa pateiks meniu su įvairiomis funkcijomis. Pasirinkite funkciją įvedę atitinkamą numerį ir spauskite Enter.

Menu

Programos funkcijos:

  • Nuskaito duomenis iš naudotojo arba failo ir patikrina ar jie yra teisingi (naudojant išimčių valdymą).
  • Duoda naudotojui galimybė pasirinkti du galutinio balo skaičiavimo būdus - skaičiuojant vidurkį ar medianą.
  • Leidžia pasirinkti 5 skirtingus būdus įvesti, nuskaityti ar sugeneruoti duomenis.
  • Dinamiškai paskiria atmintį pagal įvesta / nuskaitytą duomenų kiekį.
  • Atidaro testavimo failus ir apskaičiuoja laiką, kurį praleidžia apdorojant duomenis iš failų.
  • Visi pranešimai išvedami lietuvių kalbą.
  • Projektas išskaidytas į kelis failus (.h ir .cpp).
  • Generuoja penkis atsitiktinius studentų sąrašų failus, sudarytus iš: 1 000, 10 000, 100 000, 1 000 000, 10 000 000 įrašų
  • Atlieka tyrimus / testavimus su sugeneruotais failais.
  • Surūšiuoja studentus ir išveda į du naujus failus.
  • Yra 3 skirtingi konteinerio tipo pasirinkimai testavimui - vector, deque, list.
  • Yra 3 skirtingos strategijos duomenų skirstymui.
  • Naudojama klasė, saugojant studentų duomenis.
  • Norėdami baigti darbą su programa, pasirinkite atitinkamą skaičių.

Programos sparta naudojant skirtingus kompiliatoriaus optimizavimo lygius

Testavimo sistemos parametrai:

  • Saugykla: 256 GB, Integruota NVMe SSD
  • Atmintis: 8 GB RAM
  • Procesorius: Apple M1

Be optimizavimo testavimas

Greitis(1mln.) Greitis(10mln.) Failo dydis
Struct 12.111s 130.058s 411kb
Klasė 11.358s 118.430s 404kb
Peržiūrėti

O0 Struct
Struktūros testavimo rezultatai

O0 Struct_exe
Struktūros failo dydis

O0 Klase
Klasės testavimo rezultatai

O0 Klase_exe
Klasės failo dydis

O1 optimizavimo lygio testavimas

Greitis(1mln.) Greitis(10mln.) Failo dydis
Struct 2.790s 30.391s 162kb
Klasė 11.489s 117.949s 147kb
  • Su struktūra greitesni testavimo rezultatai, naudojant šį optimizavimo raktą.
  • Struktūros ir klasių failų dydžiai mažesni, naudojant šį optimizavimo raktą.
Peržiūrėti

O1 Struct
Struktūros testavimo rezultatai

O1 Struct_exe
Struktūros failo dydis

O1 Klase
Klasės testavimo rezultatai

O1 Klase_exe
Klasės failo dydis

O2 optimizavimo lygio testavimas

Greitis(1mln.) Greitis(10mln.) Failo dydis
Struct 2.662s 30.459s 162kb
Klasė 2.767s 29.540s 147kb
  • Su klase greitesni testavimo rezultatai, naudojant šį optimizavimo raktą.
  • Struktūros ir klasių failų dydžiai išliko tokie patys, kaip su praeitu optimizavimo raktu.
Peržiūrėti

O2 Struct
Struktūros testavimo rezultatai

O2 Struct_exe
Struktūros failo dydis

O2 Klase
Klasės testavimo rezultatai

O2 Klase_exe
Klasės failo dydis

O3 optimizavimo lygio testavimas

Greitis(1mln.) Greitis(10mln.) Failo dydis
Struct 2.734s 28.984s 161kb
Klasė 2.738s 29.735s 162kb
  • Testavimo greičio rezultatai panašūs su praeitu optimizavimo raktu.
  • Failų dydžiai minimaliai pasikeitė.
Peržiūrėti

O3 Struct
Struktūros testavimo rezultatai

O3 Struct_exe
Struktūros failo dydis

O3 Klase
Klasės testavimo rezultatai

O3 Klase_exe
Klasės failo dydis

Konteinerių testavimas

Peržiūrėti

Testavimo sistemos parametrai:

  • Saugykla: 256 GB, Integruota NVMe SSD
  • Atmintis: 8 GB RAM
  • Procesorius: Apple M1

1 strategija

Naudojant Vector tipo konteinerius:

Failo dydis Skaitymo laikas Rūšiavimo laikas Skirstymo laikas Veikimo laikas
1 000 0.023s 0.004s 0.005s 0.033s
10 000 0.113s 0.018s 0.023s 0.155s
100 000 0.763s 0.188s 0.237s 1.189s
1 000 000 7.448s 2.105s 2.673s 12.227s
10 000 000 74.810s 24.911s 31.783s 131.505s
peržiūrėti
![Vector_1](https://github.com/nojusta/LabDarbas_Nr2/blob/v1.1/Images/Vector_pradine.png)

Naudojant Deque tipo konteinerius:

Failo dydis Skaitymo laikas Rūšiavimo laikas Skirstymo laikas Veikimo laikas
1 000 0.023s 0.004s 0.005s 0.034s
10 000 0.093s 0.019s 0.023s 0.136s
100 000 0.766s 0.193s 0.239s 1.198s
1 000 000 7.312s 2.160s 2.638s 12.111s
10 000 000 73.857s 25.580s 30.620s 130.058s
peržiūrėti
![Deque_1](https://github.com/nojusta/LabDarbas_Nr2/blob/v1.1/Images/Deque_pradine.png)

Naudojant List tipo konteinerius:

Failo dydis Skaitymo laikas Rūšiavimo laikas Skirstymo laikas Veikimo laikas
1 000 0.023s 0.003s 0.004s 0.031s
10 000 0.112s 0.018s 0.023s 0.154s
100 000 0.761s 0.247s 0.296s 1.305s
1 000 000 7.352s 3.322s 3.818s 14.493s
10 000 000 73.862s 42.406s 47.849s 164.118s
peržiūrėti

List_1

2 strategija

Naudojant Vector tipo konteinerius:

| Failo dydis | Sk...

Read more