Prestandautvärdering av databashantering och datastrukturer i C++
Elfving, Rasmus (2025)
Elfving, Rasmus
2025
All rights reserved. This publication is copyrighted. You may download, display and print it for Your own personal use. Commercial use is prohibited.
Julkaisun pysyvä osoite on
https://urn.fi/URN:NBN:fi:amk-2025061122384
https://urn.fi/URN:NBN:fi:amk-2025061122384
Tiivistelmä
Tämä opinnäytetyö tutkii, miten kolme tietorakennetta std::vector, std::map ja std::unordered_map sekä SQLite-tietokanta suoriutuvat tallennuksen, haun ja iteroinnin operatiivisissa testeissä. Työ vertailee näiden tallennusratkaisujen ajallista suorituskykyä tarjotakseen käytännön näkökulmaa niiden käyttötarkoituksiin ja tehokkuuteen.
Työn tavoitteena oli mitata ja analysoida ajankäytön eroja tietorakenteiden ja
tietokantamoottorin välillä sekä verrata niitä teoreettisiin odotuksiin. Työ toteutettiin luomalla C++ ohjelma, joka generoi testidataa ja suoritti operaatiot tallennusratkaisuja vasten. Aikamittaukset kerättiin ja esitettiin diagrammein, ja tuloksia tulkittiin tietorakenteita ja aikavaativuutta koskevien teorioiden pohjalta.
Tulokset osoittavat, että tietorakenteet tarjoavat keskimäärin paremman suorituskyvyn kuin tietokanta, mikä on odotettavissa, koska tietokanta on levypohjainen. Sekä tallennuksessa että iteroinnissa std::vector suoriutuu parhaiten, kun taas std::unordered_map on tehokkain haussa. Tietorakenne std::map on hieman hitaampi, mutta sen tasainen suorituskyky perustuu itseään tasapainottavaan puuhun. SQLiten mittaustulokset ovat suhteessa korkeampia, mutta se osoittaa hyvää suorituskykyä haussa.
Työ osoittaa, miten tallennusratkaisun valinta voi tehostaa datan käsittelyä. Tietorakenteet sopivat parhaiten nopeaan ja tilapäiseen käyttöön, kun taas tietokanta soveltuu paremmin pitkäaikaiseen tallennukseen ja suurien tietomäärien jäsenneltyyn hallintaan.
Työn tavoitteena oli mitata ja analysoida ajankäytön eroja tietorakenteiden ja
tietokantamoottorin välillä sekä verrata niitä teoreettisiin odotuksiin. Työ toteutettiin luomalla C++ ohjelma, joka generoi testidataa ja suoritti operaatiot tallennusratkaisuja vasten. Aikamittaukset kerättiin ja esitettiin diagrammein, ja tuloksia tulkittiin tietorakenteita ja aikavaativuutta koskevien teorioiden pohjalta.
Tulokset osoittavat, että tietorakenteet tarjoavat keskimäärin paremman suorituskyvyn kuin tietokanta, mikä on odotettavissa, koska tietokanta on levypohjainen. Sekä tallennuksessa että iteroinnissa std::vector suoriutuu parhaiten, kun taas std::unordered_map on tehokkain haussa. Tietorakenne std::map on hieman hitaampi, mutta sen tasainen suorituskyky perustuu itseään tasapainottavaan puuhun. SQLiten mittaustulokset ovat suhteessa korkeampia, mutta se osoittaa hyvää suorituskykyä haussa.
Työ osoittaa, miten tallennusratkaisun valinta voi tehostaa datan käsittelyä. Tietorakenteet sopivat parhaiten nopeaan ja tilapäiseen käyttöön, kun taas tietokanta soveltuu paremmin pitkäaikaiseen tallennukseen ja suurien tietomäärien jäsenneltyyn hallintaan.