Repository navigation
Releases
v2.0 release
v2.0
Diegimo instrukcija
- Atsisiųskite projekto kodą iš GitHub naudodami
git clonekomandą 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ą:
- 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.
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:
- Sukurkite projektą naudodami
make. - Paleiskite testus su
./student_test.
Išvestis turėtų atrodyti maždaug taip:
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.
-
Destruktorius: Šis komponentas naudojamas išvalyti
Studentobjektą, kai jis nebereikalingas. -
Kopijavimo konstruktorius: Šis komponentas leidžia sukurti naują
Studentobjektą, kuris yra identiškas esamamStudentobjektui. -
Kopijavimo priskyrimo operatorius: Šis operatorius leidžia priskirti vieno
Studentobjekto vertę kitamStudentobjektui. -
Perkeliamasis konstruktorius: Šis komponentas leidžia "perkelti"
Studentobjektą, o ne kopijuoti jį. Tai yra efektyvesnis būdas sukurti naująStudentobjektą, kai turime laikinąStudentobjektą, kurio mums nebereikia. -
Perkeliamasis priskyrimo operatorius: Šis operatorius leidžia "perkelti" vieno
Studentobjekto vertę į kitąStudentobjektą, 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 |
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ą.
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.
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ė.
v1.5 release
v1.5
Diegimo instrukcija
- Atsisiųskite projekto kodą iš GitHub naudodami
git clonekomandą 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ą:
- 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.
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.
-
Destruktorius: Šis komponentas naudojamas išvalyti
Studentobjektą, kai jis nebereikalingas. -
Kopijavimo konstruktorius: Šis komponentas leidžia sukurti naują
Studentobjektą, kuris yra identiškas esamamStudentobjektui. -
Kopijavimo priskyrimo operatorius: Šis operatorius leidžia priskirti vieno
Studentobjekto vertę kitamStudentobjektui. -
Perkeliamasis konstruktorius: Šis komponentas leidžia "perkelti"
Studentobjektą, o ne kopijuoti jį. Tai yra efektyvesnis būdas sukurti naująStudentobjektą, kai turime laikinąStudentobjektą, kurio mums nebereikia. -
Perkeliamasis priskyrimo operatorius: Šis operatorius leidžia "perkelti" vieno
Studentobjekto vertę į kitąStudentobjektą, 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 |
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ą.
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.
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ė.
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 ... |
v1.2
v1.2
Diegimo instrukcija
- Atsisiųskite projekto kodą iš GitHub naudodami
git clonekomandą 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ą:
- 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.
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.
-
Destruktorius: Šis komponentas naudojamas išvalyti
Studentobjektą, kai jis nebereikalingas. -
Kopijavimo konstruktorius: Šis komponentas leidžia sukurti naują
Studentobjektą, kuris yra identiškas esamamStudentobjektui. -
Kopijavimo priskyrimo operatorius: Šis operatorius leidžia priskirti vieno
Studentobjekto vertę kitamStudentobjektui. -
Perkeliamasis konstruktorius: Šis komponentas leidžia "perkelti"
Studentobjektą, o ne kopijuoti jį. Tai yra efektyvesnis būdas sukurti naująStudentobjektą, kai turime laikinąStudentobjektą, kurio mums nebereikia. -
Perkeliamasis priskyrimo operatorius: Šis operatorius leidžia "perkelti" vieno
Studentobjekto vertę į kitąStudentobjektą, 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 |
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ą.
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.
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ė.
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 |
...
v1.1 release
v1.1
Diegimo instrukcija
- Atsisiųskite projekto kodą iš GitHub naudodami
git clonekomandą 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ą:
- 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.
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 |
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ą.
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.
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ė.
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

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

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 |
2 strategija
Naudojant Vector tipo konteinerius:
| Failo dydis | Sk...



















