C++- ja Java-ohjelmointikielien suoritusnopeuteen vaikuttavat tekijät
Zhou Jiang, Victor (2023)
Zhou Jiang, Victor
2023
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ä
2023-05-10
Julkaisun pysyvä osoite on
https://urn.fi/URN:NBN:fi:tuni-202305085473
https://urn.fi/URN:NBN:fi:tuni-202305085473
Tiivistelmä
Ohjelmistojen kehittäminen on monimutkainen prosessi, joka vaatii eri ohjelmointikielien käyttöä. Kielen valinnassa huomioidaan usein eri tekijöitä kuten helppokäyttöisyys, toimivuus ja suorituskyky. Yksi suorituskyvyn kriittinen näkökohta on suoritusnopeus eli aika, joka ohjelmalta kestää tietyn tehtävän suorittamiseen.
Tässä työssä on tarkoitus selvittää, mitkä tekijät vaikuttavat C++ ja Javan suoritusnopeuksiin, sekä niiden vaikutusta. Kyseisiä ohjelmointikieliä käytetään laajalti ja niiden välistä suoritusnopeutta vertaillaan usein alan julkaisuissa ja keskustelufoorumeilla. Lisäksi työssä selvitetään, miten näiden kahden kielen välisiä suoritusnopeuksia voi vertailla.
Tutkielmassa tarkastellaan seuraavia tekijöitä: Ahead-Of-Time (AOT) kääntäminen, Just-In-Time (JIT) kääntäminen, roskienkeruu ja rinnakkaisuus. Näiden lisäksi tarkastellaan erilaisia menetelmiä suorituskyvyn mittaamiseen ja vertailuun, kuten mikro-, makro- ja mesosuorituskykytestaaminen.
JIT:stä ja AOT:sta todettiin, että JIT voi hidastaa ohjelmaa, koska se varaa resursseja ajon aikaista optimointia varten, mutta samalla tämä mahdollisesti nopeuttaa ohjelmaa. Roskienkeruun osalta todettiin, että optimoidulla koodilla ohjelman suoritusnopeutta voidaan parantaa manuaalisen muistinhallinnan avulla. Sama koskee myös C++:n rinnakkaisuutta.
Lopputuloksena oli, että vaikka Javalla on edut muistinhallinnan ja ohjelmoitavuuden suhteen, C++ on erinomainen suorituskykykriittisissä sovelluksissa matalan tason ohjauksen ja tehokkaan muistinhallinnan ansiosta. Toisaalta C++:n ja Javan suoritusnopeuksien erot eivät ole kovin suuret.
Tässä työssä on tarkoitus selvittää, mitkä tekijät vaikuttavat C++ ja Javan suoritusnopeuksiin, sekä niiden vaikutusta. Kyseisiä ohjelmointikieliä käytetään laajalti ja niiden välistä suoritusnopeutta vertaillaan usein alan julkaisuissa ja keskustelufoorumeilla. Lisäksi työssä selvitetään, miten näiden kahden kielen välisiä suoritusnopeuksia voi vertailla.
Tutkielmassa tarkastellaan seuraavia tekijöitä: Ahead-Of-Time (AOT) kääntäminen, Just-In-Time (JIT) kääntäminen, roskienkeruu ja rinnakkaisuus. Näiden lisäksi tarkastellaan erilaisia menetelmiä suorituskyvyn mittaamiseen ja vertailuun, kuten mikro-, makro- ja mesosuorituskykytestaaminen.
JIT:stä ja AOT:sta todettiin, että JIT voi hidastaa ohjelmaa, koska se varaa resursseja ajon aikaista optimointia varten, mutta samalla tämä mahdollisesti nopeuttaa ohjelmaa. Roskienkeruun osalta todettiin, että optimoidulla koodilla ohjelman suoritusnopeutta voidaan parantaa manuaalisen muistinhallinnan avulla. Sama koskee myös C++:n rinnakkaisuutta.
Lopputuloksena oli, että vaikka Javalla on edut muistinhallinnan ja ohjelmoitavuuden suhteen, C++ on erinomainen suorituskykykriittisissä sovelluksissa matalan tason ohjauksen ja tehokkaan muistinhallinnan ansiosta. Toisaalta C++:n ja Javan suoritusnopeuksien erot eivät ole kovin suuret.
Kokoelmat
- Kandidaatintutkielmat [8253]