Java ja käännetyn kielen nopeusero

Pohdintaa...

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 ?

8

290

    Vastaukset

    Anonyymi (Kirjaudu / Rekisteröidy)
    5000
    • 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

    1. SDP jo 100 % suositumpi kuin persut

      Kertoo Hesarin uusin kannatuskysely. Demareiden kannatus on miltei tuplat verrattuna persuihinl. Suomen kansa ei selväst
      Maailman menoa
      134
      10833
    2. Voiko normaali ihminen ryhtyä vasemmistolaiseksi?

      Tätä jäin pohdiskelemaan.
      Maailman menoa
      261
      4689
    3. SDP haluaa 40 000 nettomaahanmuuttajaa

      SDP:n Suunnanmuutos-vaihtoehtobudjetissa, käy ilmi, että demarit itse asiassa vaativat räjähdysmäistä ”työperäisen” maah
      Maailman menoa
      177
      4033
    4. Orpo: Velkajarrua vastustavaa puoluetta vaikea ajatella hallitukseen

      No Minja Koskelan kommunistipuolue jäi ulos tuosta. Kaikki eduskuntapuolueet vasemmistoliittoa lukuun ottamatta sopivat
      Maailman menoa
      179
      3533
    5. PS 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 nousija
      Maailman menoa
      90
      3380
    6. Mikä tämä henkilö mahtaa touhuta Parkanossa

      Kamalaa https://www.ylasatakunta.fi/teksti/pirkanmaan-karajaoikeus-vangitsi-koiran-tappamisesta-epaillyn-6.68.127794.b58
      Parkano
      49
      3310
    7. Valtavasti 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,
      Maailman menoa
      80
      3159
    8. Ikä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 i
      Ikävä
      32
      2940
    9. Hienoa! 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.
      Maailman menoa
      69
      1844
    10. Kiinnostaa - ei kiinnosta - kiinnostaapas

      Selittäkää hämmentyneelle miksi miehiä ei ikinä kiinnosta silloin, kun sitä olisi itsekin kiinnostunut? Sitten kun siirt
      Sinkut
      192
      1722
    Aihe