1. Foren
  2. Kommentare
  3. Software-Entwicklung
  4. Alle Kommentare zum Artikel
  5. › Lively Kernel…
  6. Th…

JAVA macht meinen PC immer so langsam!

Neue Foren im Freiraum! Raumfahrt und freie Software haben jetzt einen Platz, die Games tummeln sich jetzt alle in einem Forum.
  1. Thema
  1. 1
  2. 2
  3. 3
  4. 4

Neues Thema Ansicht wechseln


  1. Re: JAVA macht meinen PC immer so langsam!

    Autor: Hello_World 08.10.07 - 12:40

    nixgibts schrieb:
    -------------------------------------------------------
    > Punkt 1 stimmt, Punkt 2 ist voelliger quatsch.
    > C/C++ ist Java in Sachen Geschwindigkeit einfach
    > haushoch ueberlegen.
    Nein, eigentlich nicht. Hier hängen jetzt zwei Programme dran, eines in C++ und eines in Java. obwohl sie im wesentlichen das gleiche machen, ist die Java-Variante *deutlich* schneller als die C++-Variante. Tabulatoren werden hier leider nicht angezeigt, deswegen ist es ein bißchen unübersichtlich...

    import java.util.*;
    class bla {
    char[] c;
    bla() {
    c=new char[Math.abs(Main.r.nextInt())%100];
    }
    }
    class Main {
    static Random r;
    public static final int ARRAY_SIZE = 10000;
    public static void main(String[] args) {
    r = new Random();
    bla[] blub = new bla[ARRAY_SIZE];
    long d1 = new Date().getTime();
    for(int i=0;i<(1<<24);++i) {
    int j = Math.abs(Main.r.nextInt())%ARRAY_SIZE;
    if(blub[j] == null)
    blub[j] = new bla();
    else
    blub[j] = null;
    }
    long d2 = new Date().getTime();
    System.out.println((double)(d2-d1)/(double)1000);

    }
    }


    und folgendes in C++:

    #include <cstdlib>
    #include <cstring>
    #include <ctime>
    #include <iostream>
    #define nullptr NULL
    #define ARRAY_SIZE 10000
    int main(int argc, char* argv[]) {

    char** blub = new char*[ARRAY_SIZE];
    memset(blub,0,sizeof(char*)*ARRAY_SIZE);
    srand(time(0));
    double d1 = (double)clock()/(double)CLOCKS_PER_SEC;
    for(int i=0;i<(1<<24);++i) {
    int j = rand()%ARRAY_SIZE;
    if(blub[j] == nullptr)
    blub[j] = new char[rand()%100];
    else
    delete[] blub[j];
    blub[j] = nullptr;
    }
    double d2 = (double)clock()/(double)CLOCKS_PER_SEC;
    std::cout << d2-d1 << std::endl;
    }







    1 mal bearbeitet, zuletzt am 08.10.07 12:41 durch Hello_World.

  2. Assembler noch schneller

    Autor: sssss 08.10.07 - 12:43

    Wenns um nativen Code geht dann kann C/C++ auch Assembler das Wasser nicht reichen.

    nate schrieb:
    -------------------------------------------------------
    > > natuerlich, drum erzeugen die java runtimes
    > mit
    > JIT compiler ja auch nativen code fuer
    > solche
    > sachen.
    >
    > Reicht trotzdem nicht, solange bei fast jedem
    > Speicherzugriff (Arrays!) erst einmal Typ- und
    > Bereichschecks durchgeführt werden müssen. Klar,
    > so wird ausgeschlossen, dass wild im Speicher
    > herumgeschrieben werden kann, wenn das Programm
    > einen Bug hat -- aber es killt eben auch die
    > Performance, wenn man wirklich einfach nur rechnen
    > will.
    >
    > > Prinzipiell is java meiner meinung aber
    > ein
    > schritt in die richtige richtung, die
    > fehler die
    > man in C++ machen kann sind
    > schlimm
    >
    > Natürlich. Für Applikationslogik ist Java, .net
    > oder sogar Python auch durchaus zu empfehlen. Aber
    > wenn es auf blanke Performance ankommt, führt
    > momentan eben noch kein Weg an nativem Code
    > vorbei.


  3. Re: JAVA macht meinen PC immer so langsam!

    Autor: nate 08.10.07 - 12:45

    > Java hat heutzutage zu C++ gerade mal noch den
    > Faktor 1,1 bus 1,3.

    Bei welcher Anwendung? 1.1 bis 1.3 glaube ich unbesehen, wenn man eine GUI-Desktopanwendung, Business- oder Serverkram als Grundlage nimmt. Aber bei Dingen wie Bildverarbeitung, Multimedia etc. sieht das schon ganz anders aus. Man zeige mir z.B. eine Videocodec-Implementation in Java, die performancemäßig mit einem C-Äquivalent mithalten kann.

    > Dafür ist C++ von der Sprache her eine Pest.

    Das stimmt. Es ist mir auch rätselhaft, wie sich so etwas je durchsetzen konnte :(

    > Pointer, Destruktoren, ... urgs!

    Hm? Jetzt verliere ich den roten Faden aber. Bei Pointern sehe ich ja noch ein, dass sie eine große Fehlerquelle darstellen (wobei sie aber, richtig angewendet, bei der Lösung mancher Probleme recht elegant und effizient, und somit unabkömmlich sind). Aber was gibt es gegen Destruktoren einzuwenden?

  4. Re: Assembler noch schneller

    Autor: nate 08.10.07 - 12:48

    > Wenns um nativen Code geht dann kann C/C++ auch
    > Assembler das Wasser nicht reichen.

    Sagen wirs so: Der Unterschied zwischen halbwegs maschinennah geschriebenem C-Code, der von einem gut optimierenden Compiler übersetzt wurde, und komplett von Hand geschriebenem Assembler-Code ist _meistens_ recht gering, während bei Java und .net schon das zwangsweise aktivierte Range Checking alles kaputt macht.

  5. Re: JAVA macht meinen PC immer so langsam!

    Autor: Ekelpack 08.10.07 - 12:50

    > Hm? Jetzt verliere ich den roten Faden aber. Bei
    > Pointern sehe ich ja noch ein, dass sie eine große
    > Fehlerquelle darstellen (wobei sie aber, richtig
    > angewendet, bei der Lösung mancher Probleme recht
    > elegant und effizient, und somit unabkömmlich
    > sind). Aber was gibt es gegen Destruktoren
    > einzuwenden?

    Wenn man sie benutzen KANN, ist alles super. Ich habe mir schon selbst oft genug einen quasi-Destruktor in Java gebastelt.
    (Methodenaufruf im finally-Block)
    Wenn ich sie jedoch ausführen MUSS, dann bin ich nicht glücklich.

  6. Re: JAVA macht meinen PC immer so langsam!

    Autor: Jay Äm 08.10.07 - 13:24

    NullPointer schrieb:
    -------------------------------------------------------
    > Es gibt mitlerweile genügend Vergleiche die zu dem
    > Schluss kommen, dass der Unterschied zwischen Java
    > und C/C++ kaum mehr ins Gewicht fällt, in manchen
    > Bereichen ist Java sogar um einiges schneller.
    >
    > Der schlechte Ruf von Java ist längst überholt,
    > denn vor einigen Jahren war Java vor allem im GUI
    > Bereich sehr langsam. Das hat sich aber gewaltig
    > geändert!

    Stimmt! Darum wird Crysis auch nicht mit C++ programmiert, sondern mit Java :-)

  7. Re: JAVA macht meinen PC immer so langsam!

    Autor: AtomicBitHunter 08.10.07 - 13:26

    sumsi schrieb:
    -------------------------------------------------------
    > Du weisst selber ganz genau, dass hier eine
    > aktuelle Standard Runtime gemeints ist.
    Lesen hilft manchmal. Der O.P. hat sich nicht über Runtimes sondern über C-Compiler ausgelassen. Aber selbst dann. Welche Stabdadr-Runtime darfs denn sein. Sun/jre1.6/X86 IBM/JRE1.5/Power Apple/JRE1.4.7/PPC G4

    Mit oder ohne "-server" letzteres Föag ist in einem JRE z.B. nicht möglich und bringt bei x86 und meiner Applikation (die übrigens sher rechenintensiv ist, ein neuronales Netz. Übrigens vermutlich schneller als es hier jemand in C++ hinbekommz) je nach CPU 80-100%.

    Performance mit Java (oder anderen managed Languages) ist eben nicht so simpei wie "aktuelle Standard Runtime"

    und damit ssind die verschiedenen Anwenddugsszenarien noch überhaupt nicht berücksichtigt. So pauschale Aussagen wie "Java ist _beliebiger_Gemeinplatz_" sind genauso intelligent wie alle _beliebige_volksgruppe_sind_belibiges_attribut_ einfach nur Grunzen auf Stammtischniveau


    >> Hört mal auf, hier Apfelkerne mit Blumenerde
    >> zu vergleichen.
    >siehe oben.
    siehe oben, du hast's echt nicht begriffen.

    > Bist ein ganz gescheiter. Suche einfach den
    > Vergleichen und Du wirst alle diese Fragen
    > beantwortet finden.
    Offensichtlich hast du nicht verstanden worum es ging, aber immerhin hast du eine Meinung dazu.....

  8. Re: 20 Jahre IT Erfahrung?

    Autor: duden 08.10.07 - 13:34

    20 Jahre IT Erfahrung?
    Und trotzdem noch keine Recht Schreibung gelernt?

  9. Re: JAVA macht meinen PC immer so langsam!

    Autor: quarx 08.10.07 - 13:40

    Hello_World schrieb:
    -------------------------------------------------------
    > nixgibts schrieb:
    > Nein, eigentlich nicht. Hier hängen jetzt zwei
    > Programme dran, eines in C++ und eines in Java.
    > obwohl sie im wesentlichen das gleiche machen, ist
    > die Java-Variante *deutlich* schneller als die
    > C++-Variante. Tabulatoren werden hier leider nicht
    > angezeigt, deswegen ist es ein bißchen
    > unübersichtlich...
    >
    > (...)

    ... kann ich nicht so ganz nachvollziehen:

    Java-Variante unter Debian Linux (Etch), Java 1.4.2, auf einem 2.8GHz P4:
    16.092

    C++ (gcc 4.1.1, ohne Optimierungsoptionen):
    4.9

    C++ (gcc 4.1.1 mit -O2):
    3.81

    Auf welchem System hast Du getestet?

  10. Re: JAVA macht meinen PC immer so langsam!

    Autor: TheDragon 08.10.07 - 14:09

    Könnte das vielleicht daran liegen, dass es unter Java praktisch keine vernünftige DirectX-Unterstützung gibt??

  11. Meinen nicht. (kwt)

    Autor: ayee 08.10.07 - 14:20

    so sieht's aus

  12. Re: JAVA macht meinen PC immer so langsam!

    Autor: nate 08.10.07 - 14:34

    > Könnte das vielleicht daran liegen, dass es unter
    > Java praktisch keine vernünftige
    > DirectX-Unterstützung gibt??

    Es gibt aber OpenGL-Bindings, und trotzdem nutzt es keiner für ernsthafte Spieleentwicklung.

  13. Re: 20 Jahre IT Erfahrung?

    Autor: itsme 08.10.07 - 14:34

    duden schrieb:
    -------------------------------------------------------
    > 20 Jahre IT Erfahrung?
    > Und trotzdem noch keine Recht Schreibung gelernt?


    LOL - du meinst Rechtschreibung? Hier den Moralappostel spielen und selbst keine Ahnung haben...

  14. Re: JAVA macht meinen PC immer so langsam!

    Autor: ohje 08.10.07 - 14:47

    Ekelpack schrieb:
    -------------------------------------------------------
    > pennymarkt schrieb:
    > --------------------------------------------------
    > -----
    > > NullPointer schrieb:
    >
    > --------------------------------------------------
    >
    > -----
    > > > Punkt 1 stimmt, Punkt 2
    > ist
    > voelliger
    > quatsch.
    > C/C++ ist
    > Java in
    > Sachen
    > Geschwindigkeit
    > einfach
    > haushoch
    > ueberlegen.
    >
    > Es gibt mitlerweile
    > genügend Vergleiche
    > die zu dem
    > Schluss
    > kommen, dass der
    > Unterschied zwischen Java
    >
    > und C/C++ kaum
    > mehr ins Gewicht fällt, in
    > manchen
    >
    > Bereichen ist Java sogar um einiges
    >
    > schneller.
    >
    > Der schlechte Ruf von
    > Java
    > ist längst überholt,
    > denn vor
    > einigen Jahren
    > war Java vor allem im GUI
    >
    > Bereich sehr
    > langsam. Das hat sich aber
    > gewaltig
    >
    > geändert!
    > achso - das
    > erklärt natürlich weshalb auf
    >
    > unterschiedlichen PCs mit unterschiedlichen
    >
    > browsern und mit unterschiedlichen "stable"
    > java
    > releases - java-apps (u.a. map24.de) in
    > gewohnter
    > unregelmäßigkeit abkacken... is
    > klar...
    > java ist noch meilenweit entfernt,
    > sich eine
    > stabile runtime schimpfen zu
    > dürfen...
    >
    > [ ] Dir ist der Unterschied zwischen Applet und
    > Applikation klar.
    >

    [ ] DIR ist der Unterschied zwischen Applet und Applikation klar.

  15. Re: JAVA macht meinen PC immer so langsam!

    Autor: Super, Socke! 08.10.07 - 14:48

    > Stimmt! Darum wird Crysis auch nicht mit C++
    > programmiert, sondern mit Java :-)

    Kind, du hast den Kern der Diskussion leider nicht kapiert ...

  16. Re: 20 Jahre IT Erfahrung?

    Autor: nate 08.10.07 - 14:52

    > LOL - du meinst Rechtschreibung? Hier den
    > Moralappostel spielen und selbst keine Ahnung
    > haben...

    Aua. Könnte es _vielleicht_ sein, dass er den Fehler des Vorposters _bewusst_ wiederholt hat, um darauf aufmerksam zu machen?

    Im Übrigen schreibt man "Apostel" mit nur einem 'p'.

  17. Re: JAVA macht meinen PC immer so langsam!

    Autor: Ekelpack 08.10.07 - 14:56


    > Java-Variante unter Debian Linux (Etch), Java
    > 1.4.2, auf einem 2.8GHz P4:
    > 16.092

    Wir sind mittlerweile bei Java 6...

  18. Programmiersprachen-Penisvergleich

    Autor: dftzguhjk 08.10.07 - 15:03

    NullPointer schrieb:
    -------------------------------------------------------
    > Herr, lass Hirn vom Himmel fallen!
    >
    > > Ist zwar toll, dass es auf allen
    > Plattformen
    > läuft, aber mein PC geht dadurch
    > immer in die
    > Knie.
    >
    > Java != JavaScript und 2. ist Java nicht mehr
    > langsamer als andere Programmiersprachen.


    http://shootout.alioth.debian.org/gp4sandbox/benchmark.php?test=all&lang=all

    *hust*

  19. Re: JAVA macht meinen PC immer so langsam!

    Autor: quarx 08.10.07 - 15:15

    Ekelpack schrieb:
    -------------------------------------------------------
    > > > Java-Variante unter Debian Linux (Etch),
    > Java
    > 1.4.2, auf einem 2.8GHz P4:
    > 16.092
    >
    > Wir sind mittlerweile bei Java 6...

    OK, stimmt. Mit der frischen Java-Version 1.6.0_03 komme ich immerhin auf einen Wert von 9.202. Die C++-Variante ist aber nach wie vor um ein Mehrfaches schneller.

  20. Re: JAVA macht meinen PC immer so langsam!

    Autor: Fancy 08.10.07 - 16:08

    Hab die beiden sourcen gerade auch mal ausprobiert:


    Für C++:

    # g++ --version
    g++ (GCC) 3.4.4 20050721 (Red Hat 3.4.4-2)[..]

    # g++ -O2 Main.cc
    # ./a.out
    4.34


    Für Java:

    # java -version
    java version "1.6.0_02"[..]

    #javac Main.java
    #java -server -Xms64m Main
    2.548



    Aber:
    - der gcc ist noch ein 3.4
    - naives # java Main --> 7.549

    Alles unter Fedora Core.

    Rein subjektiv liegt die Erfahrung in meinem Umfeld so, das ein Programm welches naiv in Java geschrieben wurde oft schneller ist als ein naiv geschriebenes in C++. Erst wenn viel Zeit und Können in das C++ Programm gesteckt wurde, kann es (teilweise sogar deutlich) schneller werden als die Java Version. Allerdings sind dazu meistens Optimierungen notwendig, die nicht mal eben zwischen Tür und Angel zu erledigen sind.

  1. Thema
  1. 1
  2. 2
  3. 3
  4. 4

Neues Thema Ansicht wechseln


Um zu kommentieren, loggen Sie sich bitte ein oder registrieren Sie sich. Sie müssen ausserdem in Ihrem Account-Profil unter Forum einen Nutzernamen vergeben haben. Zum Login

Stellenmarkt
  1. Mitarbeiter/in (m/w/d) IT-Helpdesk/IT-Support
    Rudolf Wöhrl SE, Nürnberg
  2. Referent (m/w/d) Datenmanagement
    TransnetBW GmbH, Stuttgart
  3. Leiter (m/w/d) Softwareentwicklung Innovationen für Healthcare & Medizinprodukte
    USP SUNDERMANN CONSULTING Unternehmens- und Personalberatung, Murr
  4. IT-Service und Systemadministrator (m/w/d)
    Scheja und Partner Rechtsanwälte mbB, Bonn

Detailsuche


Golem pur
  • Golem.de ohne Werbung nutzen

Anzeige
Top-Angebote
  1. (u. a. Apple iPhone 12 Pro Max 256GB für 1.069€ mit Rabattcode "PHONES21")
  2. 99€ (Bestpreis)
  3. Teilnahmeschluss 28.09., 19 Uhr
  4. (u. a. MSI Optix MAG322CQR 31,5 Zoll Curved WQHD 165Hz für 350€, Crucial Ballistix RGB 16GB Kit...


Haben wir etwas übersehen?

E-Mail an news@golem.de