Wie schnell ist Javascript im Vergleich zu Java?
Gibt es irgendwelche tests, die Vergleich Javascript mit Java?
UPDATE: Da jeder fragt sich, warum zum Teufel diese Frage, hier ist etwas Kontext 🙂
Wie Sie alle wissen - ich hoffe, Javascript heutzutage nicht nur befinden sich in der web-client aber auch in der web-server mit node.js.
Könnte es auch in Mobiltelefonen und dekstops mit appcelerator und phonegap.
Könnte es auch verwendet werden, im wesentlichen in der web-browser des Benutzers die Erfahrung der first class wie mit desktop-Anwendungen.
Aber Java könnte diese Dinge auch für die Ausführung von applets auf der web-client sowie auf Mobiltelefonen. Es ist auch eine Sprache für das backend mit vielen frameworks, die Wahl zwischen.
Da jeder von Ihnen konnte fast/ganz ersetzen, die einander in den genannten Bereich, ich will wissen, den Unterschied in der Leistung zwischen Ihnen, für jeden Fall, den ich beschrieben:
- Client: Java-Applets vs Javascript
- - Server: Java EE vs Javascript mit Node.js + Express
- Handys: Java ME vs Javascript mit Phonegap /Appcelerator
- Desktop: Java SE vs Javascript mit Phonegap /Appcelerator
Ich hoffe der Zusammenhang ist klar jetzt.
InformationsquelleAutor der Frage never_had_a_name | 2010-09-16
Du musst angemeldet sein, um einen Kommentar abzugeben.
Java und JavaScript sind beides Programmiersprachen. Programmiersprachen sind nur ein Haufen von abstrakten mathematischen Regeln. Programmiersprachen sind nicht schnell. Oder langsam. Sie nur sind.
Ist die performance einer Anwendung hat nichts zu tun mit der Sprache. Der wichtigste Faktor ist die Anwendung Architektur. Dann kommt die Algorithmische Effizienz. Dann micro-Optimierungen. Dann kommt die Qualität des compiler/interpreter. Dann die CPU. Vielleicht ein paar andere Schritte dazwischen. Die Sprache, jedoch nicht direkt eine Rolle spielen. (Und natürlich, wenn Sie reden über benchmarks, die dann auch die jeweiligen benchmark eine Rolle spielt, wie gut implementiert ist der Maßstab, wie gut es laufen wird, ob der Kerl, führt der benchmark eigentlich weiß etwas über benchmarking-Ansätze und-noch wichtiger-Statistik. Auch die präzise definition von dem, was Sie eigentlich bedeuten von "schnell" ist ziemlich wichtig, da es können auch haben signifikanten Einfluss auf den benchmark.)
Jedoch, die Sprache, die vielleicht indirekt eine Rolle spielen: es ist viel einfacher zu finden und zu beheben Sie performance-Engpässe in 10 Zeilen der ausdrucksstarke, klare, prägnante, lesbare, gut ausgearbeitete, isoliert, high-level-Lisp-code, als in 100 Zeilen Wirren, low-level-C. (Beachten Sie, dass diese zwei Sprachen sind nur Beispiele. Ich meine nicht auf einzelne alle eine Sprache aus.) Twitter, zum Beispiel, haben gesagt, dass mit einer weniger expressive Sprache als Ruby, Sie wäre nicht in der Lage gewesen, solche radikalen änderungen Ihrer Architektur in kürzester Zeit zu beheben Ihre Skalierbarkeit Probleme. Und der Grund, warum Node.js ist in der Lage, so gute evented I/O-performance, da JavaScript-standard-Bibliothek ist so beschissen. (So, Node.js hat alle I/O selbst, so können Sie optimieren Sie für die evented I/O vom Boden bis. Ruby und Python, zum Beispiel, haben evented I/O-Bibliotheken, die genauso gut funktionieren, wie Node.js und sind viel reifer ... aber, Ruby und Python haben schon große standard-Bibliotheken, einschließlich I/O-Bibliotheken, die alle synchron sind und nicht gut mit evented Bibliotheken. JavaScript muss nicht das problem der I/O-Bibliotheken, die nicht gut mit evented I/O, da JavaScript nicht über I/O-Bibliotheken an alle.)
Aber wenn Sie wirklich wollen die beiden zu vergleichen, hier ist ein interessanter Datenpunkt für Sie: HotSpot, das ist eine der beliebtesten und auch mehr leistungsfähige JVM-Implementierungen gibt, wurde von einem team von Jungs, die enthalten, unter anderen Menschen, ein Mann namens Lars Bak. Aber eigentlich ist HotSpot hat nicht erscheinen aus der Luft gegriffen, Sie basiert auf dem sourcecode von den Anamorphotischen Smalltalk-VM, die erstellt wurde von einem team von Jungs, die enthalten, unter anderen Menschen, ein Mann namens Lars Bak.
V8, was ist eine der beliebtesten und auch mehr leistungsfähige JavaScript-Implementierungen gibt, wurde von einem team von Jungs, die enthalten, unter anderen Menschen, ein Mann namens Lars Bak. Aber tatsächlich, der V8 hat nicht erscheinen aus der Luft gegriffen, Sie basiert auf dem sourcecode von den Anamorphotischen Smalltalk-VM, die erstellt wurde von einem team von Jungs, die enthalten, unter anderen Menschen, ein Mann namens Lars Bak.
Gegeben, dass die beiden mehr oder weniger das gleiche, wir können erwarten, eine ähnliche Leistung. Der einzige Unterschied ist, dass HotSpot hat über hundert Ingenieure arbeiten seit 15 Jahren in der Erwägung, dass V8 hat ein Dutzend Ingenieure arbeiten seit weniger als 5 Jahren. Dass wird die nur Unterschied in der Leistung. Es geht nicht darum, statische vs. dynamische Typisierung (Java ist statisch typisiert, aber die meisten JVMs und sicherlich HotSpot machen keine statische Optimierungen auch immer, alle Optimierungen sind rein dynamisch), Kompilierung vs. interpretation (HotSpot ist tatsächlich interpretiert, mit eine zusätzliche JIT-compiler, in der Erwägung, dass V8 rein kompiliert), high-level vs. low-level. Es ist rein über Geld.
Aber ich werde Wette, dass für jedes paar von Java-und JavaScript-Implementierungen, wo die Java-Implementierung schneller ist, kann ich ein anderes paar, wo der JavaScript-Implementierung schneller ist. Auch kann ich wohl halten das paar und benutzen Sie einfach eine andere benchmark. Es gibt eine Grund den Anruf der Computer-Sprachen, die Benchmark-Spiel, ein "Spiel": Sie selbst fördern Sie direkt auf Ihre eigene Seite zu spielen, um mit den benchmarks, um jede beliebige Sprache nach oben steigen.
InformationsquelleAutor der Antwort Jörg W Mittag
Ich habe nur eine Anekdote hinzufügen: ich habe vor kurzem neu implementiert eine Java-calc-server (Finanzen) in Javascript (nodejs v0.6.8). WRT Entwicklung Zeit, dass die Javascript-Umsetzung war ein Kinderspiel im Vergleich zu den original-Java-Implementierung mit weit weniger code-Zeilen. Es war ein Hauch frischer Luft, wirklich.
Den Javascript-basierten server ist in der Lage, calc über 2.4 k Handel/sec in der Erwägung, dass der Java-server mit 400+/s auf der gleichen hardware mit weniger Speicher. Ich würde nicht schreiben die Geschwindigkeit zu erhöhen, um raw-V8 vs. Java 7 Leistung, sondern vielmehr um die Umsetzung. Die Javascript-Implementierung verwendet, die weit weniger Daten, Strukturen, hat eine Größenordnung weniger Aufrufe und nimmt einen mehr geradlinig und knapp Ansatz.
Unnötig zu sagen, ich bin sehr zufrieden mit der Leistung node.js. Und dies kommt von jemandem, der war Java nur bei vielen (9) Jahren.
InformationsquelleAutor der Antwort kls
Hier sind einige tests Vergleich Javascript (V8) und kompiliert Java:
Zeigen Sie, dass Java in der Regel schneller1. Allerdings, wenn Sie Graben, um mit diesen Seiten und den verlinkten Ressourcen, Sie werden feststellen, dass es sehr schwierig ist zu vergleichen wie mit wie.
Interessanterweise Javascript funktioniert deutlich besser als Java (unter bestimmten Bedingungen) für die "regex-dna" - benchmark. Meine Vermutung ist, dass dies ist, weil die Javascript-regex-engine ist schneller als die Java-regex-engine. Dies ist durchaus nicht überraschend, angesichts der Bedeutung, die regexes in typische Javascript-Anwendungen.
1 - Streng genommen kann man nicht sagen, dass die Sprache X ist schneller als Sprache Y. Sie können nur vergleichen bestimmten Implementierungen der jeweiligen Sprachen. Und die Seite, die ich verlinkte, ist klar ... wenn Sie Pflege zu gehen über die Startseite. Allerdings ist es nicht ganz unangemessen zu verallgemeinern von spezifischen Datenpunkte ... und die scheinbare Abwesenheit von widersprüchlichen Datenpunkte ... , Java ist in der Regel schneller als Javascript in rechenintensive Aufgaben. Aber die Kehrseite ist, dass diese Art von Leistung ist oft nicht ein Objektiv wichtiges Kriterium.
InformationsquelleAutor der Antwort Stephen C
Java, offensichtlich.
Programmierer, die Liebe zu vergleichen, die Ausführungsgeschwindigkeit wie eine Art Natursekt Inhalt. Es ist nur eine Metrik, und die meisten der Zeit, nicht der wichtigste, durch eine lange erschossen. Java ist eine Sprache, die eine Mischung des seins, die schnell genug für fast alles, aber genug hohen Niveau, dass Ihnen die Sachen wie GC, die Sie normalerweise nicht bekommen, die in ähnlichen Sprachen. Javascript ist eine dynamische Schließung Sprache, die ist ideal für Sachen, die schnell (und für FP-Programmierer stecken in der OO-Welt 😉 ). Es gibt nicht viel in der Art von Kreuzung in die Räume, in denen entweder angemessen wäre.
Werde ich aufhören pontificating jetzt
EDIT: um die Adresse Bearbeiten in der post
Aufgrund der Art, wie man schreibt ideomatisches javascript (Funktionen aus Funktionen), es eignet sich überraschend gut auf asynchrone Programmierung, wahrscheinlich besser als jede andere Sprache mit ähnlichen Beliebtheit. Node.js scheint, wenn es um eine riesige Menge an kurze verbindungen, also javascript ist eine wirklich gute Passform für diese Art der Sache.
Während node.js ist völlig durchnässt in genial, die neue Schärfe wirklich bedeutet nicht, es ist in allem der beste, egal was der hype sagt. Wenn eine java-app ist ersetzbar durch Knoten, die Chancen sind java war nicht wirklich angebracht, in den ersten Platz.
InformationsquelleAutor der Antwort Matt Briggs
Wahrscheinlich nicht, aber es ist nicht wirklich wichtig.
Bevor Sie zu Google Chrome JavaScript-JIT-Compiler Java-Sieg über JavaScript so schnell wie das problem kam, die groß genug zum überwinden der Last der Zeit.
Java sollte noch vollständig vernichten JavaScript aufgrund von integer vs. float-math. Egal, wie gut der JIT kann es nicht wirklich Wett machen.
InformationsquelleAutor der Antwort Joshua
http://benchmarksgame.alioth.debian.org/u64q/javascript.html
(Achten Sie auf die cpu-Spalte sowohl-als-auch verstrichenen Sekunden).
Gemäß den obigen link JavaScript als Realität jetzt steht, ist viel langsamer für fast alles.
InformationsquelleAutor der Antwort Schalk Dormehl
Sind Sie nur ähnlich im Namen, das ist es. Java wird kompiliert, während JavaScript interpretiert wird (meistens). Selbst mit dem V8 ist just-in-time compiler Java ist schneller an alles.
InformationsquelleAutor der Antwort Josh K