C++-standardikirjaston ja Boost.container-kirjaston säililöt
Kokkonen, Jesse (2021)
Kokkonen, Jesse
2021
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ä
2021-05-11
Julkaisun pysyvä osoite on
https://urn.fi/URN:NBN:fi:tuni-202104273896
https://urn.fi/URN:NBN:fi:tuni-202104273896
Tiivistelmä
Nykypäivänä ohjelmointikielille on tarjolla useita erilaisia kirjastoja, jotka sisältävät ohjelmointia nopeuttavia ja helpottavia ominaisuuksia. Näistä merkittäviä ovat esimerkiksi valmiiksi ohjelmoidut, heti käyttövalmiit säiliöt. C++-standardikirjasto ja Boost.container-kirjasto tarjoavat useita eri käyttötilanteisiin sopivia säiliöitä. C++-standardikirjasto on tarkkaan määritelty ja se noudattaa standardia, kun taas Boost.container on avoimeen lähdekoodiin perustuva kirjasto. Boost.container-kirjaston lähdekoodi on vapaassa jaossa Boost Software License -lisenssin alla. Tällä lisenssillä kuka tahansa saa käyttää, muokata ja jakaa Boost.container-kirjastoa vapaasti.
Tämän työn tarkoituksena on tutkia C++-standardikirjaston ja Boost.container-kirjaston tarjoamia säiliöitä, ja vertailla niiden suorituskykyä erilaisissa tilanteissa. C++-standardikirjasto on laajemmin tunnettu ja käytetty kirjasto, joten työssä keskitytään erityisesti löytämään tilanteita, joissa Boost.container-kirjaston säiliöt toimivat standardikirjaston säiliöitä tehokkaammin.
Työssä käydään aluksi läpi muutamia alkeellisia tietorakenteita, joihin molempien kirjastojen säiliöt perustuvat. Sen jälkeen suoritetaan katsaus C++-standardikirjaston säiliöihin ja iteraattoreihin. Tämän jälkeen tutkitaan Boost.container-kirjaston säiliöitä, jotka muistuttavat C++-standardikirjaston säiliöitä. Lopuksi säiliöitä vertaillaan niille saatavilla olevien operaatioiden asymptoottisten aikakompleksisuuksien avulla, ja niille etsitään optimaalisia käyttötilanteita. Katsauksesta selviää, että kirjastojen säiliöitä yhdistävät lähinnä nimeämiskäytännöt, sillä niiden sisäiset toteutukset todetaan toisistaan hyvin poikkeaviksi.
Työn aikana löydettiin useita tilanteita, joissa vähemmän tunnetusta Boost.container-kirjastosta löytyvä säiliö toimii tehokkaammin kuin jokin standardikirjaston säiliöistä. Löydöksiä tukevat työn aikana suoritetut säiliöiden operaatioiden aikakompleksisuuksien vertailut ja aiheesta löydetty kirjallisuus.
Tämän työn tarkoituksena on tutkia C++-standardikirjaston ja Boost.container-kirjaston tarjoamia säiliöitä, ja vertailla niiden suorituskykyä erilaisissa tilanteissa. C++-standardikirjasto on laajemmin tunnettu ja käytetty kirjasto, joten työssä keskitytään erityisesti löytämään tilanteita, joissa Boost.container-kirjaston säiliöt toimivat standardikirjaston säiliöitä tehokkaammin.
Työssä käydään aluksi läpi muutamia alkeellisia tietorakenteita, joihin molempien kirjastojen säiliöt perustuvat. Sen jälkeen suoritetaan katsaus C++-standardikirjaston säiliöihin ja iteraattoreihin. Tämän jälkeen tutkitaan Boost.container-kirjaston säiliöitä, jotka muistuttavat C++-standardikirjaston säiliöitä. Lopuksi säiliöitä vertaillaan niille saatavilla olevien operaatioiden asymptoottisten aikakompleksisuuksien avulla, ja niille etsitään optimaalisia käyttötilanteita. Katsauksesta selviää, että kirjastojen säiliöitä yhdistävät lähinnä nimeämiskäytännöt, sillä niiden sisäiset toteutukset todetaan toisistaan hyvin poikkeaviksi.
Työn aikana löydettiin useita tilanteita, joissa vähemmän tunnetusta Boost.container-kirjastosta löytyvä säiliö toimii tehokkaammin kuin jokin standardikirjaston säiliöistä. Löydöksiä tukevat työn aikana suoritetut säiliöiden operaatioiden aikakompleksisuuksien vertailut ja aiheesta löydetty kirjallisuus.
Kokoelmat
- Kandidaatintutkielmat [7051]