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: Horst 08.10.07 - 17:13

    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!

    Soso - selbst auf aktueller Hardware (Intel DualCore 2.xGhz) sind GUI Java-Apps unbrauchbar. Schonmal NeoOffice fürn Mac ausprobiert? Da bekommt man die Krätze ...

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

    Autor: Horst 08.10.07 - 17:16

    LH_ schrieb:
    -------------------------------------------------------
    > ABER: Am Ende ist oft die Mannstunde teurer als
    > ein schnellerer Rechner (egal ob Desktop oder
    > Server), und ein in kürzerer Zeit geschriebeneres
    > langsameres Javaprogramm kann am Ende trotzdem
    > effizienter mit den Resourcen umgehen, halt hier
    > mit der Resource Mensch :)

    LOL - *SO* eine Argumentation für Java hab ich ja noch nie gehört. Das ist exakt das, was für Scriptsprachen wie PHP & Perl spricht - aber ganz bestimmt NICHT für Java. Im Gegenteil!

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

    Autor: quarx 08.10.07 - 17:18

    Fancy schrieb:
    -------------------------------------------------------
    > 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

    Mit diesen Optionen komme ich bei mir auch auf 2.7. Aha, es kommt anscheinend auf die eingestellte Heapgröße an. Die nicht durchgeführte Speicherrückgabe in Java ist aber ein wenig Augenwischerei, gell?

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

    Autor: auweia 08.10.07 - 17:58

    Neooffice enthält so gut wie kein Java. Schade auch...

    Horst 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!
    >
    > Soso - selbst auf aktueller Hardware (Intel
    > DualCore 2.xGhz) sind GUI Java-Apps unbrauchbar.
    > Schonmal NeoOffice fürn Mac ausprobiert? Da
    > bekommt man die Krätze ...


  5. Re: JAVA != JavaScript

    Autor: syr.Oliver 08.10.07 - 20:31

    nixmix schrieb:
    -------------------------------------------------------
    > Javascript de.wikipedia.org
    > Java de.wikipedia.org


    Mmmh :p Javascript ist nicht JAVA kompatibel, nur die Befehle sind sich ähnlich, zuvor hieß JavaScript LiveScript, nur als JAVA immer stärker in kommen war um auf der Welle mitzuschwimmen wurde der Name dann geändert mehr auch nicht. An sich haben bei aber rein gar nichts miteinander zu tun.

    JavaScript ist eine Scriptsprache, während Java viel komplexer und vielseitiger ist. Java ist eine Programmiersprache und auch als Hostbetriebssystem anzusehen und auch zu behandeln ist.

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

    Autor: syr.Oliver 08.10.07 - 20:33

    Horst 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!
    >
    > Soso - selbst auf aktueller Hardware (Intel
    > DualCore 2.xGhz) sind GUI Java-Apps unbrauchbar.
    > Schonmal NeoOffice fürn Mac ausprobiert? Da
    > bekommt man die Krätze ...

    Ich habe Neo Office auf den Mac laufen und läuft gut und schnell und das auf ein iBook 1,3 GHz PowerPC G4 CPU.
    Auf ein G3 kann schon sein das es langsamer ist, ich weiß nicht was für ein Mac du hast.

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

    Autor: syr.Oliver 08.10.07 - 20:35

    Vaja schrieb:
    -------------------------------------------------------
    > Ist zwar toll, dass es auf allen Plattformen
    > läuft, aber mein PC geht dadurch immer in die
    > Knie.


    was für'ne Mühle hast du denn ?

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

    Autor: LiveScript 08.10.07 - 22:03

    Tja vollkommen falsch getrollt. JavaScript hat mit Java so gut wie gar nichts zu tun. Netscape hätte es damals doch besser LiveScript genannt...

    Aber JavaScript stinkt auch!

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

    Autor: Wise Guy - Old Fart 08.10.07 - 23:09

    Horst schrieb:
    -------------------------------------------------------
    > LH_ schrieb:
    > --------------------------------------------------
    > -----
    > > ABER: Am Ende ist oft die Mannstunde teurer
    > als
    > ein schnellerer Rechner (egal ob Desktop
    > oder
    > Server), und ein in kürzerer Zeit
    > geschriebeneres
    > langsameres Javaprogramm kann
    > am Ende trotzdem
    > effizienter mit den
    > Resourcen umgehen, halt hier
    > mit der Resource
    > Mensch :)
    >
    > LOL - *SO* eine Argumentation für Java hab ich ja
    > noch nie gehört. Das ist exakt das, was für
    > Scriptsprachen wie PHP & Perl spricht - aber
    > ganz bestimmt NICHT für Java. Im Gegenteil!
    >
    >

    Ab einer Projektgröße von 10.000 Klassen, möchte ich sehen, wie du mit Pearl oder gar PHP zurecht kommst. Auch C/C++ Projekte sind da nur noch mit sehr großer Disziplin der Entwickler möglich. In dieser Liga werden Heutzutage nur noch Java oder eine .NET Sprachen verwendet (eigentlich nur C# oder VB.NET), oft mittels native Schnittstelle um mit alten Libraries zu kommunizieren.
    Java Programme sind zwar anfangs aufwändiger zu schreiben, aber aufgrund extrem guter Werkzeuge wie Eclipse, Netbeans, JProfiler,... sind diese später um Größenordnungen besser zu warten.
    Die Performance der Sprache oder Plattform an sich spielt dabei sowieso keine Rolle mehr: Bei der Applikation, welche ich beruflich zu warten habe, wird oft eine Collection mit 100 Einträgen in eine andere Collection kopiert (um irgendeine Schnittstelle verwenden zu können) und dann wird nur das letzte Element verwendet. Aber Datenbank zugriffe und Netzwerk machen immer noch weit über 90% der Laufzeit jeder Transaktion in Anspruch. Dabei sind diese Dinge hoch optimiert.
    Wenn wir die ganze Applikation in C++ entwickelt hätten, würde eine Transaktion wahrscheinlich eine Millisekunde weniger Zeit in Anspruch nehmen, dafür könnten wir womöglich den Server nicht ein halbes Jahr ohne Neustart laufen lassen (Libraries werden zum Teil während der Laufzeit aktualisiert - siehe Classloader) und das gesamte Ding besteht aus über 30.000 Klassen.

    Was Spieleentwicklung betrifft finde ich Java aber trotzdem nur suboptimal, weil es keine einfache _und_ effiziente Möglichkeit gibt mit bestimmtem Datenstrukturen wie Poligonmodelle zu arbeiten. Es gibt zwar Szenegraph, doch dieses ist weit entfernt von aktuellen Grafik Engines.

    Was Desktop Applikationen und besonders Applets betrifft, hinkt die Java Plattform noch weit hinter der Konkurrenz, wie Flash und .NET, hinterher. Das wird sich aber hoffentlich noch 2008 ändern.

    So, das war mein Aufsatz

  10. Re: Assembler noch schneller

    Autor: Wise Guy - Old Fart 08.10.07 - 23:17

    nate schrieb:
    -------------------------------------------------------
    > > 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.

    Fakt ist, dass der JIT den Range-Check und auch die Typ-Überprüfung oft wegoptimieren kann.
    Aber man kann halt in Java nicht auf SSE oder MMX, etc optimieren, was reine JAVA Lösungen für z.B. Video Codecs ausschließt.

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

    Autor: Fancy 09.10.07 - 00:17

    quarx schrieb:
    > Die nicht durchgeführte Speicherrückgabe in Java ist aber ein wenig
    > Augenwischerei, gell?


    Hm, was genau meinste den damit?

    Unabhängig davon halt ich die beiden hier gezeigten sourcen eh für fernab jeglicher Realität:

    # java -agentlib:hprof=cpu=times Main
    # cat java.hprof.txt
    [..]
    CPU TIME (ms) BEGIN (total = 1175608) Mon Oct 8 23:58:15 2007
    rank self accum count trace method
    1 19.15% 19.15% 16777216 300976 java.util.Random.next
    2 17.52% 36.66% 1 301495 Main.main
    3 12.23% 48.90% 16777216 300977 java.util.Random.nextInt
    4 10.03% 58.93% 8391108 300984 bla.<init>
    5 9.67% 68.59% 8391108 300981 java.util.Random.next
    6 6.10% 74.69% 8391108 300982 java.util.Random.nextInt
    7 5.33% 80.03% 16777216 300975 java.util.concurrent.atomic.AtomicLong.compareAndSet
    8 5.29% 85.32% 16777216 300974 java.util.concurrent.atomic.AtomicLong.get
    9 5.27% 90.59% 16777216 300978 java.lang.Math.abs
    10 2.66% 93.25% 8391108 300980 java.util.concurrent.atomic.AtomicLong.compareAndSet
    11 2.64% 95.89% 8391108 300979 java.util.concurrent.atomic.AtomicLong.get
    12 2.62% 98.52% 8391108 300983 java.lang.Math.abs
    13 0.73% 99.25% 2 300987 java.lang.Object.wait
    14 0.73% 99.99% 3 300998 java.lang.ref.ReferenceQueue.remove
    CPU TIME (ms) END


    ^^ Das hat ja nicht wirklich was mit der Verteilung eines halbwegs sinnvollen Programms zu tun, es sei den es soll ein Benchmark für Random/rand() sein...



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

    Autor: max17 09.10.07 - 08:53

    >
    > na, da hat aber wehr Ahnung von der Materie. Und
    > warum ist gerade bei Banken, Versicherungen und
    > Telco's besonders viel in Java umgesetzt?

    Weil diese Firmen sich teure Berater einkaufen, die Ihnen immer den aktuellen Hype verkaufen und das war damals halt Java.
    Warum setzen Banken eigentlich immer noch OS/2 ein. Weils so toll ist???

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

    Autor: quarx 09.10.07 - 09:04

    Fancy schrieb:
    -------------------------------------------------------
    > quarx schrieb:
    > > Die nicht durchgeführte Speicherrückgabe in
    > Java ist aber ein wenig
    > Augenwischerei,
    > gell?
    >
    > Hm, was genau meinste den damit?

    Ich meine damit, dass die Speicherrückgabe der 2^24 Objekte innerhalb des C++-Codes explizit durch delete() passiert (und damit die Laufzeit erhöht), im Java-Code hingegen erst nach Beendigung des Programms durch die Garbage Collection (und damit laufzeitneutral). Das macht den Vergleich ein wenig unfair.

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

    Autor: Fancy 09.10.07 - 10:52

    quarx schrieb:
    > Ich meine damit, dass die Speicherrückgabe der
    > 2^24 Objekte innerhalb des C++-Codes explizit
    > durch delete() passiert (und damit die Laufzeit
    > erhöht), im Java-Code hingegen erst nach
    > Beendigung des Programms durch die Garbage
    > Collection (und damit laufzeitneutral). Das macht
    > den Vergleich ein wenig unfair.

    Hm, ihmo ist dem nicht so. In der Java source steht zwar kein expliziter mit delete() vergleichbarer Aufruf, jedoch das "blub[j] = null;" reicht um den Garbage Collector auch zur Laufzeit regelmäßig auszulösen.

    # java -server -Xms64m -verbosegc Main
    [GC 5824K->795K(64832K), 0.0059870 secs]
    [GC 6619K->782K(64832K), 0.0036720 secs]
    [GC 6606K->783K(64832K), 0.0026510 secs]
    [GC 6607K->802K(64832K), 0.0028000 secs]
    [GC 6626K->789K(64832K), 0.0025330 secs]
    [..]
    2.469

    # java -server -Xms64m -verbosegc Main | grep -c GC
    183

    Zur Probe:

    Object bla = 16 Byte
    Char[] c ~ 114 Byte

    Dann gilt:
    (1/2 * 2^24) / 183 * (16 + 114) Byte = 5819 kByte

    Und das ist ziemlich genau das, was zur Laufzeit, in jedem Lauf des Garbage Collectors freigegeben wird.

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

    Autor: quarx 09.10.07 - 13:57

    Fancy schrieb:
    -------------------------------------------------------
    > In der Java source
    > steht zwar kein expliziter mit delete()
    > vergleichbarer Aufruf, jedoch das "blub = null;"
    > reicht um den Garbage Collector auch zur Laufzeit
    > regelmäßig auszulösen.

    Dieser Automatismus wäre mir neu, ist das dokumentiert? Die GC kann man doch nur explizit über System.gc() auslösen, oder? Und blockiert die GC denn überhaupt die Ausführung des auslösenden Java-Codes?

  16. Re: 20 Jahre IT Erfahrung?

    Autor: dudentor 09.10.07 - 14:30

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

    Recht Schreibung? Da wird ja der Bock zum Gärtner.

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

    Autor: Fancy 09.10.07 - 16:45

    quarx schrieb:
    > Die GC kann man doch nur explizit über System.gc() auslösen, oder?

    Nein, leider kann man über System.gc() keinen Lauf des Garbage Collectors auslösen. System.gc() übermittelt der VM lediglich den Wunsch, aber ob und unter welchen Umständen der Garbage Collector dann ausgelöst wird hängt ausschließlich von der VM ab.

    Trotzdem lässt sich die Arbeit des Garbage Collectors beeinflussen.
    In dem Beispiel hier ist das entscheidende:

    bla[] blub = new bla[ARRAY_SIZE];
    [..]
    blub[j] = null;

    blub ist also ein Array von Objekten des Typs bla. Jedes bla Objekt enthält wieder ein char Array. Durch die explizite Anweisung
    "blub[j] = null;" wird der einzige Verweis auf das bja Objekt an Position j gelöscht. Anschließend ist weder das eigentlich dahinter liegende bla Objekt noch das im bla Objekt enthaltene char Array erreichbar.

    Bei einem Lauf des Garbage Collectors wird diese Situation erkannt und die jeweils belegten, aber nicht mehr erreichbaren, Speicherbereiche werden freigegeben.

    Zur Laufzeit kann, über den VM Parameter -verbosegc, die Arbeit des Garbage Collectors überwacht werden. So ist z.B. in meinem Beispiellauf, aus dem vorherigen Post, der Garbage Collector 183 mal ausgelöst worden und hat dabei jeweils um die 5818kByte Speicher freigegeben. Damit sind im vergleich zur C++ Lösung jeweils knapp 46k explizite delete() Anweisungen zu 1 Lauf des Garbage Collectors zusammengefasst worden.


    > Und blockiert die GC denn überhaupt die Ausführung des auslösenden
    > Java-Codes?

    Nein, zumindest nicht direkt. Allerdings ist die Rechenleistung des Rechners endlich. Ein Lauf des Garbage Collectors kostet jedoch Rechenleistung, womit der eigentliche Ablauf des Programms verlangsamt wird. Da die Zeitmessung des Beispiel Codes über new Date().getTime() erfolgt, ist diese absolut zur Systemzeit und enthält damit auch die Verzögerung durch den Garbage Collector.


    > Dieser Automatismus wäre mir neu, ist das dokumentiert?
    Sorry, dazu hab ich leider keinen direkten Link parat. Sollte aber in vielen Java Büchern, oder auch irgendwo auf http://java.sun.com/reference/docs/index.html dokumentiert sein.





    1 mal bearbeitet, zuletzt am 09.10.07 16:48 durch Fancy.

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

    Autor: GrinderFX 09.10.07 - 17:04

    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!


    Ja die gibt es aber das mit der gui ist nicht richtig.
    Die java guis sind immer noch sau träge und genau das sagen die tests auch voraus. Einzig und alleine in konsolenbereichen und in berechnungen können sie gleichauf bzw. schneller sein, wenn diese teile dafür optimiert wurden. Trotzdem kann man jede berechnung in assembler und c/c++ schneller machen, wenn man richtit programmieren kann

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

    Autor: quarx 09.10.07 - 18:46

    Fancy schrieb:
    -------------------------------------------------------
    > (...)

    Vielen Dank für die Informationen, wieder was dazu gelernt! :-)

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

    Autor: sss123 09.10.07 - 19:46

    NullPointer schrieb:
    -------------------------------------------------------
    > 2. ist Java nicht mehr
    > langsamer als andere Programmiersprachen.

    Kommt auf den Anwendungsbereich an, es kann teilweise gleich schnell oder sogar etwas schneller sein, meistens hat man jedoch mit Compilersprachen einen Geschwindigkeitsvorteil.


  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. Senior Mobile Developer (m/f/d)
    IDnow GmbH, Düsseldorf, deutschlandweit (Home-Office)
  2. Informatiker/in (FH-Diplom / Bachelor / Fachinformatiker/in [m/w/d])
    Zentrum Bayern Familie und Soziales Dienststelle Zentrale Personalmanagement, Bayreuth
  3. Fachinformatiker (m/w/d)
    ZTG Zentrum für Telematik und Telemedizin GmbH, Hagen
  4. (Senior) Expert Development (m/w/d) Backend SAP-Commerce / Hybris
    Fressnapf Holding SE, Düsseldorf

Detailsuche


Golem pur
  • Golem.de ohne Werbung nutzen

Anzeige
Top-Angebote
  1. 10,39€ (Bestpreis!)
  2. 229€ (Vergleichspreis ca. 300€)
  3. 149€ (Bestpreis!) - Aktuell nur in einzelnen Märkten erhältlich
  4. 149,50€ (Bestpreis)


Haben wir etwas übersehen?

E-Mail an news@golem.de