C++:n ja Golangin tietorakenteiden tehokkuuksien vertailu
Vuorinen, Lasse (2022)
Vuorinen, Lasse
2022
Tieto- ja sähkötekniikan kandidaattiohjelma - Bachelor's Programme in Computing and Electrical Engineering
Informaatioteknologian ja viestinnän tiedekunta - Faculty of Information Technology and Communication Sciences
This publication is copyrighted. You may download, display and print it for Your own personal use. Commercial use is prohibited.
Hyväksymispäivämäärä
2022-06-17
Julkaisun pysyvä osoite on
https://urn.fi/URN:NBN:fi:tuni-202206025446
https://urn.fi/URN:NBN:fi:tuni-202206025446
Tiivistelmä
Tehokkaiden ohjelmistojen valmistamisessa keskeinen osa on käyttää tehokkaita ja kyseiseen käyttötarkoitukseen mahdollisimman hyvin soveltuvia tietorakenteita. C++ ja Golang ovat molemmat todella nopeita käännettäviä ohjelmointikieliä. Molemmat ohjelmointikielet sisältävät hyvin samankaltaisia perustietorakenteita. Tässä työssä vertailtiin C++:n vektoritietorakenteen tehokkuutta Golangin viipaletietorakenteen tehokkuuteen ja C++:n sanakirjatietorakenteen tehokkuutta Golangin sanakirjatietorakenteen tehokkuuteen. Tavoitteena oli selvittää, kumman ohjelmointikielen kyseiset tietorakenteet ovat tehokkaampia ja miten tietorakenteiden sisältämien alkioiden määrä vaikuttaa niiden tehokkuuteen. Tutkimus toteutettiin käyttämällä kirjallisia lähteitä ja suorittamalla itse vertailukokeita.
Työssä on kaksi osaa. Ensimmäisessä osassa on kirjallisuuden pohjalta esitetty tietorakenteiden tekniset toteutukset ja niiden ominaisuudet. Lisäksi siinä on kerrottu asymptoottisesta tehokkuudesta ja sen erisuuruisista tehokkuuskäyristä. Toisessa osassa toteutettiin tietorakenteiden tehokkuuksia vertailevia käytännön kokeita. Siinä mitattiin alkioiden lisäämistä, poistamista ja hakemista tietorakenteista.
Tutkimuksen tuloksena Golangin viipale osoittautui yksittäisiä alkioita koskevissa operaatioissa C++:n vektoria nopeammaksi, mutta jos operaatio vaati tietorakenteen läpikäymistä tai uudelleenallokointia, niin C++:n vektori oli nopeampi. Sanakirjoja koskevissa kokeissa C++:n järjestämätön sanakirja oli kaikista nopein lähes kaikissa kokeissa. Golangin sanakirja ja C++:n järjestetty sanakirja olivat sitä nopeampia vain usean alkion lisäämisessä kahdella suurimmalla syötemäärällä ja alkion poistamisessa arvon avulla kahdella suurimmalla syötemäärällä. Golangin sanakirja oli yksittäisiä alkioita koskevissa kokeissa C++:n järjestettyä sanakirjaa nopeampi. C++:n järjestetty sanakirja puolestaan oli Golangin sanakirjaa nopeampi usean alkion lisäämisessä ja alkion poistamisessa arvon perusteella pienimmällä alkiomäärällä.
Työssä on kaksi osaa. Ensimmäisessä osassa on kirjallisuuden pohjalta esitetty tietorakenteiden tekniset toteutukset ja niiden ominaisuudet. Lisäksi siinä on kerrottu asymptoottisesta tehokkuudesta ja sen erisuuruisista tehokkuuskäyristä. Toisessa osassa toteutettiin tietorakenteiden tehokkuuksia vertailevia käytännön kokeita. Siinä mitattiin alkioiden lisäämistä, poistamista ja hakemista tietorakenteista.
Tutkimuksen tuloksena Golangin viipale osoittautui yksittäisiä alkioita koskevissa operaatioissa C++:n vektoria nopeammaksi, mutta jos operaatio vaati tietorakenteen läpikäymistä tai uudelleenallokointia, niin C++:n vektori oli nopeampi. Sanakirjoja koskevissa kokeissa C++:n järjestämätön sanakirja oli kaikista nopein lähes kaikissa kokeissa. Golangin sanakirja ja C++:n järjestetty sanakirja olivat sitä nopeampia vain usean alkion lisäämisessä kahdella suurimmalla syötemäärällä ja alkion poistamisessa arvon avulla kahdella suurimmalla syötemäärällä. Golangin sanakirja oli yksittäisiä alkioita koskevissa kokeissa C++:n järjestettyä sanakirjaa nopeampi. C++:n järjestetty sanakirja puolestaan oli Golangin sanakirjaa nopeampi usean alkion lisäämisessä ja alkion poistamisessa arvon perusteella pienimmällä alkiomäärällä.
Kokoelmat
- Kandidaatintutkielmat [8253]