Mikä mahtaa olla suoritusnopeuden ero Javan ja vaikka käännetys C-koodin välillä.
En tarkoita kirjastojen tms. nopeuksia vaan ihan puhtaan koodin.
Ihan suuruusluokka olisi riittävä. Onko Java 3,10, 30, 100, 300, 1000 -kertaa hitaampaa ?
Java ja käännetyn kielen nopeusero
8
290
Vastaukset
- pohtija1
Aluksi:
Teoriassa pascal on ehkä nopein kieli (väite perustuu embarcadero Delphi/C builder tietoihin) mutta näin se ei käytännössä ole.
Jos käännät täysin saman lähdekoodin Free Pascal:lla ja Delphillä niin näiden ero on valtava (Delphin hyväksi). Eli nopeusero johtuu kääntäjän toteutuksesta ei kielestä (lähdekoodi on sama).
Periaatteessa C-koodi on nopeampaa kuin Java koodi.
Mutta kun vertaillaan jonkun tekemä C-koodia ja hänen (tai jonkun muun ) tekemää java-koodia havaitaan että java -koodi on nopeampaa!.
Java koodin nopeus perustuu kääntäjän ajonaikaiseen optimointiin. Vaikka C-kääntäjäkin optimoi koodin on todennäköisempää että sama (perustasoinen) koodari ei pysty tekemään sellaista koodia C:llä joka olisi hänen Java-koodia nopeampaa.
Eli todellisuudessa eri kielten vertailua hankaloittaa eri kääntäjä (valmistaja) toteutukset (vrt Delphi - Free Pascal -> täysin sama koodi mutta suuri nopeusero. Tosin Free Pascal koodikaan, ei ole hidasta!)
Eri kielten ero jolloin nopein toteutus voi olla erilainen.
Mutta suosittelen jonkin yliopistotasoisen tietorakenteet -kurssin käymistä ellet ole jo sellaista suorittanut (Jolloin pitäisi ymmärtää että väärä algoritmi väärässä paikassa voi aiheuttaa aivan älyttömiä eroja).- Pohdintaa
Voisitko ystävällisesti lukea kysymykseni uudelleen ja vastata asiaan jos tiedät siitä jotain.
Tulkitsen muuten että sinun mielestäsi Java tulkki ajaa samanlaista peruskoodia yhtä nopsaan kuin mitä käännetty C-koodi juoksee. - pohdintaaa
Pohdintaa kirjoitti:
Voisitko ystävällisesti lukea kysymykseni uudelleen ja vastata asiaan jos tiedät siitä jotain.
Tulkitsen muuten että sinun mielestäsi Java tulkki ajaa samanlaista peruskoodia yhtä nopsaan kuin mitä käännetty C-koodi juoksee.Jos et ole perehtynyt miten tehdä nopeita ohjelmia niin on hyvin todennäköistä että sinun tekemäsi koodi on yhtä nopeata Javalla ja C:llä.
Mieti vielä mitä tuossa yllä sinulle vastattiin. Pohdintaa kirjoitti:
Voisitko ystävällisesti lukea kysymykseni uudelleen ja vastata asiaan jos tiedät siitä jotain.
Tulkitsen muuten että sinun mielestäsi Java tulkki ajaa samanlaista peruskoodia yhtä nopsaan kuin mitä käännetty C-koodi juoksee.Sanotaan näin että sovellusohjelmoijalle asialle ei ole mitään merkitystä. Kieli valitaan ympäristön/ekosysteemin tai jonkun hassunhauskan ominaisuuden mukaan. Suorituskyky ei ole mikään ongelma.
Lähinnä Javascriptin ero natiiviin on jo sellainen että voi jossain raskaammassa miettiä toista tapaa kun puhutaan 10x eroista.
- 20Vkoodausta
Asia ei ole noin yksinkertainen, sillä C-koodista käännetään binäärikoodia, joka ajetaan sellaisenaan, kun taas Java koodia ajetaan Javan-virtuaalikoneella joka voi mukautua ajettavan koodin mukaan.
C-kielessä jos FOR-silmukan sisällä kutsutaan funtiota, niin se on aina yhtä nopea.
Javassa jos for-silmukan sisällä kutsutaan funtiota, niin Java-virtuaalikone voi ajon aikana huomata että tuossa funktiossa vieraillaan hullun paljon, jolloin se kopioi funtion sisältämän koodin ajanaikana FOR-loop koodin sisään, jolloin erillistä funtiokutsua ei tarvita. Koodi voi siis nopeutua kun sitä ajetaan tarpeeksi kauan. Eli Java voi joskus olla nopeampi kuin C-kieli jos koodia ei ole optimoitu.
Tietysti Javan käynnistys vie aikaa, joten kerroin voi olla mitä vain, jos kyseessä on lyhyt C-ohjelma joka lopettaa itsensä millisekunneissa. Jos taas ohjelmaa ajetaan "ikuisesti", niin Javan-optimointi voi muuttaa tilannetta.
Ajatteleppa kysymystä; kumpi on nopeampi auto vai kävely. Luulisit että auto, mutta mittaappa mitä vie siirtyä kävellen tai autolla metrin verran. Kävellen yksi askel, autolla autoon nousu, käynnistys, lyhyt rullaus eteenpäin, ja autosta nousu. Oho, aina auto ei olekkaan nopein. Joskus auto on Java joskus C, aina tilanteesta eli ohjelmasta riippuen.
Jos oikeasti optimoidaan, niin uskon että C voittaa aina, mutta Java-vituaalikoneen ominaisuudet ovat sen verran edistyneitä että eivät tavalliset harrastelijat edes tiedä mitä kaikkea ne tekevät, joten vastaaminen on vaikeaa tai vastaukset hatusta vedettyjä. Ei ole olemassa mitään kerrointa. - tehdäänteoriaaaina
Teoriassa on aina hyvä puhua, minäkin voin sanoa että "TEORIASSA", java-kieli paihihttää optimoidun assembly-kielen, mennen tullen laskutoimituksissa.
- eirelevanttia
Kaikki kielet kääntyvät lopuksi konekoodille, muutoihan prossu ei sitä ajais jotta vertailu aika turhaa. Kielten käyttötarkoitus muutoinkin täysin erilainen, jotta ei niitä voi verrata suoraan esim. "tee tämä algoritmi molemmilla ja vertaa". Sama ku sanois, että kummallako pääsee nopeemmin siwaan ladalla vaiko 500s mersulla.
- 1+12
Kaikkia kieliä ei käännetä (osa tulkataan, hitaampi).
Jos valitaan sopimaton algoritmi niin ratkaisu voi olla älyttömän hidas.
On ymmärrettävä mikä algoritmi sopii lopulliseen ratkaisuun.
Ketjusta on poistettu 0 sääntöjenvastaista viestiä.
Luetuimmat keskustelut
SDP jo 100 % suositumpi kuin persut
Kertoo Hesarin uusin kannatuskysely. Demareiden kannatus on miltei tuplat verrattuna persuihinl. Suomen kansa ei selväst13410833- 2614689
SDP haluaa 40 000 nettomaahanmuuttajaa
SDP:n Suunnanmuutos-vaihtoehtobudjetissa, käy ilmi, että demarit itse asiassa vaativat räjähdysmäistä ”työperäisen” maah1774033Orpo: Velkajarrua vastustavaa puoluetta vaikea ajatella hallitukseen
No Minja Koskelan kommunistipuolue jäi ulos tuosta. Kaikki eduskuntapuolueet vasemmistoliittoa lukuun ottamatta sopivat1793533PS ylivoimainen nousija myös HS:n gallupissa, SDP laskee taas
https://www.verkkouutiset.fi/a/hs-gallup-sdpn-suosio-laskee-ps-nousussa/#0a7d2507 Ylivoimainen viime kuukausien nousija903380Mikä tämä henkilö mahtaa touhuta Parkanossa
Kamalaa https://www.ylasatakunta.fi/teksti/pirkanmaan-karajaoikeus-vangitsi-koiran-tappamisesta-epaillyn-6.68.127794.b58493310Valtavasti suomalaisia asunnottomina, mutta ei yhtään somalia
tai muuta kehitysmaalaista. Mites tässä näin kävi? Tiedän hyvin, että esim. somaleita lentää ulos mm. Hekan asunnoista,803159Ikävä sinua mies
Vuosia kuluu, mutta tunteet ei ole hävinnyt. Tasoittuneet toki, kun ei olla nähty. Järki palannut päähän kuitenkin. Se i322940Hienoa! Eduskunta luopui käteisen käytöstä
Nyt tuo sama muutos pitää saada myös muuhun yhteiskuntaan. Käteistähän ei tarvitse tänä päivänä enää kuin rikolliset.691844Kiinnostaa - ei kiinnosta - kiinnostaapas
Selittäkää hämmentyneelle miksi miehiä ei ikinä kiinnosta silloin, kun sitä olisi itsekin kiinnostunut? Sitten kun siirt1921722