Re(10): Java ist ne verrückte Sprache....
Geizhals » Forum » Programmierung » Java ist ne verrückte Sprache.... (47 Beiträge, 591 Mal gelesen) Top-100 | Fresh-100
Du bist nicht angemeldet. [ Login/Registrieren ]
Java ist ne verrückte Sprache....
05.11.2006, 22:52:30
Ausgehend von der Idee, daß Java ja eine kompilierte Sprache ist, macht der Compiler in P-Code recht wenig...

Ich bin mal über http://www.microjava.com/articles/techtalk/optimization?PageNo=4  gestolpert - Optimierungstechniken für J2ME (bzw. Java generell).

Was ich wirklich krass finde:
1.) Loop unrolling... Muß der Coder selbst machen, der Compiler kriegt das net hin ???
2.) >> ist schneller als ne Division ? Warum um Himmels willen... Ich meine, klar auf Assemblerebene und von mir aus auf P-Code-Ebene... Nur jeder normale C-Compiler wandelt sowas um, warum net javac ?
3.) Das IMHO allerkrasseste:

  public static final int STATE_RUNNING = 1000;
  public static final int STATE_JUMPING = 2000;
  public static final int STATE_SHOOTING = 3000;
  switch ( n ) {
    case STATE_RUNNING:
      doRun();
    case STATE_JUMPING:
      doJump();
    case STATE_SHOOTING:
      doShoot();
  }

There's nothing wrong with this, and the int constants are nice and far apart, in case we might want to stick another constant in between RUNNING and JUMPING, like STATE_DUCKING = 2500. But apparently switch statements can be compiled into one of two byte codes, and the faster of the two is used if the ints used are close together, so this would be better:

  public static final int STATE_RUNNING = 1;
  public static final int STATE_JUMPING = 2;
  public static final int STATE_SHOOTING = 3;


Was ist denn das für eine schräge Sprache ? Ich mein,alles sind ints, und switch()-Statements sind unterschiedlich schnell, je nachdem ob die Werte näher sind ???

Man muß sich direkt mal Java-PCode-Assembler ansehen, der muß ja krank sein ;-)

Antworten PM Alle Chronologisch
 
Melden nicht möglich
.  Re: Java ist ne verrückte Sprache....  (Wizard51 am 05.11.2006, 22:59:03)
.. Vom Autor zurückgezogen oder Autor hat seine Registrierung nicht bestätigt  (leave_my_name_out am 06.11.2006, 11:19:18)
.  Re: Java ist ne verrückte Sprache....  (nergal am 06.11.2006, 06:31:48)
...  Re(3): Java ist ne verrückte Sprache....  (nergal am 06.11.2006, 08:40:21)
. Vom Autor zurückgezogen oder Autor hat seine Registrierung nicht bestätigt  (Nagelfar am 06.11.2006, 09:53:01)
... Vom Autor zurückgezogen oder Autor hat seine Registrierung nicht bestätigt  (Nagelfar am 06.11.2006, 10:52:18)
..... Vom Autor zurückgezogen oder Autor hat seine Registrierung nicht bestätigt  (Nagelfar am 06.11.2006, 11:05:41)
....... Vom Autor zurückgezogen oder Autor hat seine Registrierung nicht bestätigt  (Nagelfar am 06.11.2006, 11:18:29)
.........  Re(9): Java ist ne verrückte Sprache....  (mko am 06.11.2006, 11:31:18)
......... Vom Autor zurückgezogen oder Autor hat seine Registrierung nicht bestätigt  (Nagelfar am 06.11.2006, 11:35:11)
........... Vom Autor zurückgezogen oder Autor hat seine Registrierung nicht bestätigt  (Nagelfar am 06.11.2006, 12:11:00)
............. Vom Autor zurückgezogen oder Autor hat seine Registrierung nicht bestätigt  (Nagelfar am 06.11.2006, 12:33:23)
.  Re: Java ist ne verrückte Sprache....  (adhoc am 12.11.2006, 20:25:02)
...  Re(3): Java ist ne verrückte Sprache....  (adhoc am 12.11.2006, 20:37:26)
...  Re(3): Java ist ne verrückte Sprache....  (adhoc am 12.11.2006, 21:30:13)
.....  Re(5): Java ist ne verrückte Sprache....  (adhoc am 13.11.2006, 10:01:31)
.......  Re(7): Java ist ne verrückte Sprache....  (adhoc am 13.11.2006, 12:15:50)
......... Vom Autor zurückgezogen oder Autor hat seine Registrierung nicht bestätigt  (Nagelfar am 13.11.2006, 14:39:05)
..........
Re(10): Java ist ne verrückte Sprache....
13.11.2006, 15:29:45

Warum ist es immer mit euch Leuten aus der C/C++ Welt, dass ihr manche Gegebenheiten nicht einfach als gegeben hinnehmen könnt und krampfhaft immer versuchen müsst, das, was ihr halt von eurer "alten" Umgebung kennt, auf Biegen und Brechen auch sonst überall unterzubringen?

Nun ja... Liebgewonnenes wie Compilerswitches möchte man natürlich woanders nicht missen... Insbesondere wenn es - wahrscheinlich -  nicht schwer zu implementieren wäre.


... der großteil der Laufzeit in deinem eigenen schnell hingeschluderten Sch.eißcode verbraten wird

Das ist nun mal kein Java-Phänomen sondern gilt wohl generell...
Wobei Dich Designpatterns und "bekannte Algorithmen" darin unterstützen, sauberen Code zu schreiben... Insbesondere unter Java finde zB die Collections eine gute Idee, einem Coder ohne Aufwand verschiedene mächtige Storagegschichterln (Hashmap, Hashset, ..) zur Verfügung zu stellen, die sich -leider- einige C-Coder nicht antaten.

Warum fühlen sich eigentlich Javianer angegriffen, wenn man manche Konzepte von Java für nicht super findet ? Es gibt wohl keine perfekte Sprache, die alle denkbaren Vorteile in sich vereinigt (Algol, Haskell und Perl mal ausgenommen ;-) ).
Definitiv ist es eine Frage der Aufgabenstellung, definitiv ist Java eine eigene Welt, bei der sehr vieles anders gelöst wird als in der "guten Standard-EDV", wogegen mal per se nichts einzuwenden ist. Tatsächlich modifiziert sich aber Java - gottseidank - und ist nicht bei 1.0 stehengeblieben... Und das eben genau weil viele (wohl größtenteils Java-Entwickler, da sie sonst kein Gehör gefunden hätten) Gegebenheiten nicht einfach als gegeben hinnehmen konnten ;-).

Jedenfalls war mein Initialposting kein Angriff auf die Sprache - sondern ein (eventuell provokant gebrachtes) Auseinandersetzen von mir mit für mich unüblichen Vorgehensweisen in der JavaWelt. Tatsächlich half zB adhoc ja auch beim lösen des switch()-Statements... Seine Erklärung dürfte es wohl sein.

Dein  Argument "Der Algo entscheidet" gilt natürlich grundsätzlich - aber auch wenn du einen sauberen, performanten Algo gefunden hast, gilt es - öfters - den Lowlevel zu optimieren.... Einerseits wegen KVM, andererseits schlicht wegen der Useranzahl bei Enterprise-Apps... Wenn eine Optimierung nur 1ms Geschwindigkeit pro Zugriff erspart - und 1000 User parallel zugreifen - fällt das ganz schnell wieder ins Gewicht ...

Antworten PM Alle Chronologisch Zum Vorgänger
 
Melden nicht möglich
........... Vom Autor zurückgezogen oder Autor hat seine Registrierung nicht bestätigt  (Nagelfar am 13.11.2006, 15:42:00)
............. Vom Autor zurückgezogen oder Autor hat seine Registrierung nicht bestätigt  (Nagelfar am 14.11.2006, 11:34:36)
 

Dieses Forum ist eine frei zugängliche Diskussionsplattform.
Der Betreiber übernimmt keine Verantwortung für den Inhalt der Beiträge und behält sich das Recht vor, Beiträge mit rechtswidrigem oder anstößigem Inhalt zu löschen.
Datenschutzerklärung