ei-staattisen?
onko staattisen metodin kutsu
3
368
Vastaukset
- tällänen
"As their name implies, instance methods execute instantly, while static methods..." :)
- void static
Staattinen metodi on nopeampi koska siinä metodille ei tarvitse välittää this-parametria.
- kumpi&kampi
Ei näytä olevan käytännön eroa. Kokeilin alla olevalla ohjelmalla (joka laskee kuinka monta kutsua minuutin aikana ehditään kutsua). Vaihtelemalla kasvata -metodia staattiseksi ja ei staattiseksi, niin samanlaisia arvoja ohjelma käytännössä antoi riippumatta metodin tyypistä.
--- ALKAA ---
public class Laskuri extends Thread {
long arvo;
boolean loppu;
public static void kasvata(Laskuri laskuri) {
laskuri.arvo ;
}
public void run() {
while(!loppu) kasvata(this);
}
public static void main(String[] args) throws InterruptedException {
Laskuri laskuri = new Laskuri();
laskuri.start();
Thread.sleep(1000*60);
laskuri.loppu = true;
System.out.println("Laskuri pääsi arvoon: " laskuri.arvo);
}
}
--- LOPPUU ---
Tavuu koodissa javap näyttää seuraavaa eroa:
--- ALKAA: EI-STAATTINEN ---
public void kasvata(Laskuri);
Code:
0: aload_1
1: dup
2: getfield #20; //Field arvo:J
5: lconst_1
6: ladd
7: putfield #20; //Field arvo:J
10: return
public void run();
Code:
0: goto 8
3: aload_0
4: aload_0
5: invokevirtual #24; //Method kasvata:(LLaskuri;)V
8: aload_0
9: getfield #26; //Field loppu:Z
12: ifeq 3
15: return
--- LOPPUU ---
--- ALKAA: STAATTINEN ---
public static void kasvata(Laskuri);
Code:
0: aload_0
1: dup
2: getfield #20; //Field arvo:J
5: lconst_1
6: ladd
7: putfield #20; //Field arvo:J
10: return
public void run();
Code:
0: goto 7
3: aload_0
4: invokestatic #24; //Method kasvata:(LLaskuri;)V
7: aload_0
8: getfield #26; //Field loppu:Z
11: ifeq 3
14: return
--- LOPPUU ---
Kuten joku jo totesi, niin ei-staattisessa metodissa pinoon laitetaan hieman enemmän tavaraa, mikä näkyy tuossa tavukoodissakin rivinä: "4: aload_0". Tuo yksi koodirivi kasvattaa suoritettavan koodin määrää n. 7 %:lla, mutta siltikään se ei näytä tulosten valossa vaikutavan nopeuteen. Kaikkihan riippuu loppujen lopuksi siitä, miten Java virtuaalikone kone on tehty, eli miten se suorittaa tuota koodia.
Ketjusta on poistettu 0 sääntöjenvastaista viestiä.
Luetuimmat keskustelut
Tänään pyörit ajatuksissa enemmän, kun erehdyin lukemaan palstaa
En saisi, silti toivon että sinä vielä palaat ja otetaan oikeasti selvää, hioituuko särmät ja sulaudummeko yhteen. Vuod225344- 254518
- 282631
- 342294
- 372048
- 151978
En ole koskaan kokenut
Ennen mitään tällaista rakastumista. Tiedän että kaipaan sinua varmaan loppu elämän. Toivottavasti ei tarvitsisi vain ka191627- 121561
Voi ei! Jari Sillanpää heitti keikan Helsingissä - Hämmästyttävä hetki lavalla...
Ex-tangokuningas on parhaillaan konserttikiertueella. Hän esiintyi Savoy teatterissa äitienpäivänä. Sillanpää jakoi kons211317Kerranki asiat oikein
Ilkka ja muut pienpuolueeet...teitte hyvän työn kun valitsitte pätevän henkilön virkaan eikä kepulle passelia!! Jatkakaa101224