Article View: de.comp.hardware.cpu+mainboard.misc
Article #48Re: Wieso nie ueber 4 GhZ
From: Raffael Herzog
Date: Mon, 10 Nov 2008 03:42
Date: Mon, 10 Nov 2008 03:42
88 lines
6700 bytes
6700 bytes
Elcaro Nosille wrote: >> Stimmt, aber eine Pentium-CPU führt ja auch nicht Maschinencode aus, >> sondern interpretiert ist. Denn die Stufe darunter ist der Microcode ;-) >> Sonst könnte man auch auch keine (Intel-)CPUs via BIOS-Updates >> pat(s)chen ... > > Man kann auch in einen Zwischencode kompilieren wie es Java > macht und wie es die meisten sog. "Interpreter" intern tun. Sorry, ich kann dem nicht mehr länger zulesen ... Java wird von HotSpot, sofern nötig (hier greift die 20-80-Regel: Nur 20% des Code sind überhaupt für die Performance eines Programms relevant), in Maschinencode kompiliert. Läuft es auf einem AMD64, kommen hier AMD64-spezifische Instruktionen zum Einsatz. Läuft es auf einem P4, kommen P4-spezifische Instruktionen zum Einsatz. Der Vorteil von HotSpot, gegenüber jedem statischen Compiler, ist, dass HotSpot die Kiste, auf die es compilieren soll, ganz genau kennt. HotSpot kann in drei Modi laufen: Interpreted (das ist das, was wir von Java 1.1 ohne JIT kennen), Mixed (ein Teil wird compiliert, bei einem Teil belässt man es dabei, den von javac erzeugten Bytecode zu interpretieren, das sind die oben genannten 80%), und Compiled (alles wird compiliert, abgesehen von der Code-Qualität ungefähr das, was wir von Java 1.1 mit JIT kennen). "Interpreted" macht keinen Sinn, zu 1.3 musste das noch da sein, weil man anders nicht debuggen konnte. Das ist inzwischen korrigiert. Einige argumentieren noch für diesen Modus, wenn man profilen will. Aber Profiling ohne HotSpot mit einzubeziehen, ist Schwachsinn, denn wenn man schlauer als HotSpot sein will, geht der Schuss nach hinten los. "Compiled" mag auf den ersten Blick Sinn machen, tut es aber nur begrenzt. Einige Anwendungen könnten davon tatsächlich profitieren, aber da HotSpot ein hochoptimierender Compiler ist und in Java ständig zur Laufzeit Klassen nachgeladen werden, geht dieser Schuss meist nach hinten los -- schnell Klassen laden zu können ist wichtig, das machen wir in Java nämlich ständig, und HotSpot nimmt sich schon etwas Zeit bei der Compilierung. Das Laden von Klassen zu verlangsamen ist, vor allem in Anbetracht der 20-80-Regel, kontraproduktiv. "Mixed": HotSpot beobachtet das Laufzeitverhalten des Programms und versucht, die 20%, die für die Performance relevant sind, zu ermitteln. Hat die JVM einen solchen "Hot Spot" identifiziert, wird darauf ein hochopti- mierender Compiler angesetzt. Wie gesagt, dieser Compiler kennt die Gegebenheiten dann ganz genau, und nutzt, was er nutzen kann. Die Sache geht ziemlich weit, besonders auch, wenn man bedenkt, dass die Gegebenhei- ten sich jederzeit ändern können, wenn Klassen nachgeladen werden: So kann z.B. erstmal ein Inlining einer Methode als sinnvoll erscheinen, danach ein ein Loop-Unrolling. HotSpot tut das. Kommt später eine Klasse hinzu, die das vorherige Inlining verunmöglicht und man dort einen Methoden-Aufruf stehen haben muss, macht HotSpot diese Optimierung rückgängig. Ich habe jetzt ständig "HotSpot" geschrieben, aber jede JVM, die diese Bezeichnung verdient, macht sowas heutzutage, "HotSpot" heisst es einfach dann, wenn es von Sun oder (neuerdings) OpenJDK.org kommt. Hört bitte auf, Perl oder PHP zu diesem Thema mit Java zu vergleichen ... dass Perl oder PHP, vor allem in Relation zu den Entwicklungskosten, häufig effizienter erscheinen, und auch sind, ist unbestritten. Aber Java spielt da in einer anderen Liga. Dass viele Java-Programme langsam erscheinen, liegt zu einem grossen Teil daran, dass die Programmierer ständig die JVM verarschen wollen, um dieser Langsamkeit, die Java nachgesagt wird, entgegen zu wirken. Zudem wollen sie nicht begreifen, dass man den GC am besten einfach seinen Job machen lässt, der funktioniert nämlich wesentlich komplexer, als einige es wahrhaben wollen. Kurz: Vor lauter sich Gedanken um die Performance zu machen, verwirrt man ein sehr ausgeklügeltes System derart, dass dieser Schuss gründlich nach hinten los geht: Dieses ausgeklügelte System weiss nämlich plötzlich nicht mehr, was es mit diesem "ausgeklügelten und auf Performance optimierten Java-Code^WChaos" überhaupt anstellen soll ... Was ich wohl zur Aussage, Java sei einfach, sagen könnte ... ich überlasse es dem geneigten Leser, sich das auszumalen. Dass Java ein Speicherfresser ist, ist Tatsache, wohlbekannt und unbestrit- ten. Gruss, Raffi -- Come to think of it, there are already a million monkeys on a million typewriters, and Usenet is *nothing* like Shakespeare! herzog@raffael.ch · PGP Key 5D1FF5F4 · http://www.raffael.ch/
Technical Details
Message-ID:
<gf8ahn$cm6$1@news2.open-news-network.org>Path:
arc1-ca.pugleaf.net!g2news1.google.com!news4.google.com!feeder3.cambrium.nl!feeder4.cambrium.nl!feed.tweaknews.nl!news2.euro.net!newsfeed.freenet.de!news.code-werk.net!open-news-network.org!news2.open-news-network.org!not-for-mailReferences:
<61850680-7dbe-41f8-89a4-a256dcb7d1d1@s9g2000prg.googlegroups.com> <geva1q$95d$1@news.bawue.net> <d07933a0-5574-4b82-b7ad-5fd5dd7b5e7b@c36g2000prc.googlegroups.com> <gf003l$bhe$1@hoshi.visyn.net> <49145941$0$30229$9b4e6d93@newsspool1.arcor-online.net> <gf1rfr$qbi$1@hoshi.visyn.net> <gf1tlg$ie4$1@suchanek.de> <gf1v2t$r6q$1@hoshi.visyn.net> <7s2fu5x7rg.ln2@ohme.dyndns.org> <gf3n27$75n$1@hoshi.visyn.net> <oabgu5x03i.ln2@ohme.dyndns.org> <gf4skh$eri$1@hoshi.visyn.net> <0ghju5x2vm.ln2@ohme.dyndns.org> <gf7p48$2ia$1@hoshi.visyn.net>Show Full Headers
Complete Article Headers
X-Google-Thread: 108f31,625d278187b8691 X-Google-Thread: 10c1fa,d13f31202640530b X-Google-Attributes: gid108f31,gid10c1fa,domainid0,public,usenet X-Google-Language: GERMAN,UTF8 Path: arc1-ca.pugleaf.net!g2news1.google.com!news4.google.com!feeder3.cambrium.nl!feeder4.cambrium.nl!feed.tweaknews.nl!news2.euro.net!newsfeed.freenet.de!news.code-werk.net!open-news-network.org!news2.open-news-network.org!not-for-mail From: Raffael Herzog <devnull@raffael.ch> Newsgroups: de.comp.hardware.cpu+mainboard.misc,ch.comp Subject: Re: Wieso nie ueber 4 GhZ Date: Mon, 10 Nov 2008 04:42:07 +0100 Organization: news.code-werk.net for www.open-news-network.org Lines: 88 Message-ID: <gf8ahn$cm6$1@news2.open-news-network.org> References: <61850680-7dbe-41f8-89a4-a256dcb7d1d1@s9g2000prg.googlegroups.com> <geva1q$95d$1@news.bawue.net> <d07933a0-5574-4b82-b7ad-5fd5dd7b5e7b@c36g2000prc.googlegroups.com> <gf003l$bhe$1@hoshi.visyn.net> <49145941$0$30229$9b4e6d93@newsspool1.arcor-online.net> <gf1rfr$qbi$1@hoshi.visyn.net> <gf1tlg$ie4$1@suchanek.de> <gf1v2t$r6q$1@hoshi.visyn.net> <7s2fu5x7rg.ln2@ohme.dyndns.org> <gf3n27$75n$1@hoshi.visyn.net> <oabgu5x03i.ln2@ohme.dyndns.org> <gf4skh$eri$1@hoshi.visyn.net> <0ghju5x2vm.ln2@ohme.dyndns.org> <gf7p48$2ia$1@hoshi.visyn.net> Reply-To: usenet-reply@raffael.ch NNTP-Posting-Host: NTI2MTZlNjQ2ZjZkNDk1NjZiY2VkOTM2MTI4NzdkYjlkZmM1NTc3NWY1ODIxNDA2MjQzN2EzZGI3N2E1ZTIxYjEwMTE4NGIzZTEzYzcyMDY3ZTVjMmE5NWViYWRmOWEyYzg4MzFkZTY4OTE1NTdiZQ== Mime-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8Bit X-Trace: news2.open-news-network.org eJwNwgkRADEIBDBLhS5Q5PD6l3CXibCSjkJXGy4q/V86iPTk9LrbCd4uI94zBbC1trEvtcyb8BNmicqRtuKQSZyHvLQaHwTEGw4= (10 Nov 2008 03:41:43 GMT) X-Complaints-To: abuse@open-news-network.org NNTP-Posting-Date: Mon, 10 Nov 2008 03:41:43 +0000 (UTC) X-User-ID: NTI2MTZlNjQ2ZjZkNDk1NjM0NDFiNGFlNzljMWU2NGQ5MDMzZWE2ZTBiZTE5NTkyNDgzMGQ0ZTBmOTEzZTQxYTFkNGIyNTY4ZWM4OTA5ODY= Cancel-Lock: sha1:hKOB4QOamEa87E/xRveq4qdty/8= User-Agent: KNode/0.10.9