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

212

    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. Cynthia Woods

      😋😍😋😍😋😍😋😍😋 💋 ­­­N­­y­m­­­f­o­­m­­a­­a­­­n­i -> https://x18.fun/girl04372247#CynthiaWoods 🔞💋❤️💋❤️💋🔞�
      YIT-Yhtymä
      2
      14871
    2. Aimee Dvorak

      😍😋😍😋😍😋😍😋😍 💋 ­­N­­­y­­­m­­f­o­m­a­a­n­­­i -> https://x18.fun/girl02740429#AimeeDvorak 🔞❤️❤️❤️❤️❤️🔞💋💋
      0
      3059
    3. Stephanie Love

      😋😋😋😋😋😋😋😋😋😋 ❤️ ­­N­y­­­m­f­­o­­m­­­a­a­­n­­­i -> https://x18.fun/girl01692207#StephanieLove 🔞❤️💋❤️💋❤️
      Lappi
      0
      3056
    4. Molly Graham

      😍😋😍😋😍😋😍😋😍 😍 ­­N­­­y­­m­­­f­­­o­­m­­a­a­n­i -> https://x18.fun/girl02277975#MollyGraham 🔞❤️💋❤️💋❤️🔞❤️
      Puhelimet
      0
      3055
    5. Rachelle Reynolds

      😋😍😋😍😋😍😋😍😋 🔞 ­N­­­y­­m­f­­­o­­m­­­a­­a­n­i -> https://x18.fun/girl03175674#RachelleReynolds 🔞❤️💋❤️💋❤️
      Etelä-Savo
      0
      3055
    6. Becky Steele

      🍑🍑🍑🍑🍑🍑🍑🍑🍑🍑🍑🍑 💋 ­­N­y­­­m­­f­­­o­­­m­­a­a­­­n­­i -> https://x18.fun/girl05250014#BeckySteele 🔞❤️💋❤️
      Arkkitehtuuri
      0
      3055
    7. Allison Queen

      🍒🍑🍒🍑🍒🍑🍒🍑🍒 ❤️ ­N­­­y­m­­­f­­­o­­m­a­a­­­n­­­i -> https://x18.fun/girl07854217#AllisonQueen 🔞❤️❤️❤️❤️❤️🔞
      Vedonlyönti
      0
      3054
    8. Pamela Orr

      😋😋😋😋😋😋😋😋😋😋 🍒 ­­­N­y­­m­f­­o­­­m­a­­­a­­­n­­­i -> https://x18.fun/girl06055581#PamelaOrr 🔞❤️💋❤️💋❤️🔞
      Star Wars
      0
      3054
    9. Lakeisha Coleman

      🍑🍒🍑🍒🍑🍒🍑🍒🍑 💋 ­­N­y­­­m­f­­o­­m­a­­­a­n­­i -> https://x18.fun/girl08105348#LakeishaColeman 🔞💋❤️💋❤️💋🔞
      Synnytys
      0
      3050
    10. Nancy Taylor

      😍😍😍😋😋😋😋😍😍😍 ❤️ ­­­N­­­y­m­­­f­o­m­­­a­­­a­n­­­i -> https://x18.fun/girl01560856#NancyTaylor 🔞💋❤️💋❤️💋
      Kauris
      0
      3044
    Aihe