Forum: PC-Programmierung Linux vs Windows: Play Framework Performance


von Be B. (bebo)


Angehängte Dateien:

Lesenswert?

Hallo,

hat jemand von Euch Erfahrung mit dem Play Framework 2.

Ich teste gerade eine Minimalanwendung und vergleiche Java vs Scala und 
Windows vs Linux (Mint in der Virtual Box).

Wie es aussieht, ist das Play Framework mit Scala etwas 10% schneller.

Nun habe ich aber auch die gleiche Minimal Website zwischen Linux und 
Windows vergleichen. Fairer weise muß ich dazu sagen, das Linux in der 
Virtual Maschine läuft.

Ich habe allerdings ein kleines Java Programm geschrieben und unter 
Windows und unter Linux laufen lassen. Dabei war das Programm auf dem 
virtuellen Linux ca 13% langsammer. Allso nicht so dramatisch. Betrachen 
wir das mal als nicht vorhanden.

Nun habe ich mit einem weiteren in Java geschriebenen Testprogramm die 
Zeit gemessen, die benötigt wird, um 10000 mal die gleiche Seite zu 
laden. Und hier war ich dann doch etwas verwundert.

                   TestApp Linux     TestApp Windows
WebApp Linux          6,4 Sek            6,7 Sek
WebApp Windows        3,7 Sek            2,2 Sek

Wie gesagt, daß sind jedes mal identische WebApps und identische 
TestApps.
Wieso läuft die Play Anwendung unter Windows so schnell und unter Linux 
so viel langsammer? Kann man das Erklären?

Ich habe auch mal mein Testprogrämmchen angehängt.

von D. I. (Gast)


Lesenswert?

Deine Zeit wär sinnvoller investiert wenn du einfach mal dein Problem 
schon umgesetzt hättest mit den Mittel deiner Wahl anstatt 
nichtaussagekräftige "Performance"-Tests zu machen ;)

Mittel der Wahl = Sprache+OS+Framework mit dem du am besten zurecht 
kommst.

von Urb (Gast)


Lesenswert?

Was soll diese Testapp bringen ?

So ein "Performance Test" ist so sinnvoll wie Lederhosen türkisch sind.

Performancevergleiche auf unterschiedlichen Ausgangssystemen kannst du 
dir auch direkt sparen.

Auf Grund deiner Threads hier im Forum und den Fragen die du dort 
stellt, glaub ich nicht das Performance , egal in welcher Sprache, OS , 
etc, ein Problem für dich wird.

Viel mehr fehlt dir ein grundlegendes Verständis von den Dingen die du 
gerade glaubst zu tun.

Performance ist nicht per Definition durch ein Framework gegeben, 
sondern entsteht durch Algorithmen die genau auf ein Problem passen, 
durch richtige Anwendung der zugrundeliegenden Paradigmen.

Du kannst das "Beste" Framework der Welt nehmen, wenn du nicht verstehst 
wie man es anwendet wird es dir auch nichts nützen.

von test (Gast)


Lesenswert?

In einer virtuellen Maschine Performance testen?
Kreative idee, die messergebnisse zu deinen Gunsten zurecht zu biegen ;)

Ernsthaft: Nimm ne livecd, oder einen weiteren baugleichen Rechner und 
installiere dir dort Linux.

von Be B. (bebo)


Lesenswert?

Was ist so falsch darn, wenn man sich mal mit der Performance 
beschäftigt? Vielleicht ist es wirklich kein Thema, aber darf man diese 
Dinge nicht mal Interessehalber machen? Es gibt noch kein kontretes 
Projekt, aber es interessert mich halt, was möglich ist und welche 
Alternativen es gibt.

> In einer virtuellen Maschine Performance testen?
> Kreative idee, die messergebnisse zu deinen Gunsten zurecht zu biegen ;)
Nun ja, auf dem gleichen virtuellen System habe ich auch eine Kombie aus 
Tomcat/JavaServlet getestet. Und da war die Reaktionszeit ähnlich wie 
unter Windows. (2,8s für 10000 Anfragen + SQL Abfrage).
Die Sache mit der Linux CD werde ich vielleicht aber bei Gelegenheit mal 
ausprobieren. Aber ein anderes Java Applet (zum Vergleich der 
Plattformen) lief auf der virtuellen Maschine nur knapp 15% langsammer. 
Ist das nicht auch ein Argument dafür, daß der Performance Nachteil von 
Play auf Linux Mint nicht nur durch die VM entsteht?

Wie würdet ihr denn ermitteln, wie Leistungsfähig eine 
Framework/Sprache/Server/was auch immer... ist. Ich denke, die 
Ausführungszeit zu Messen, ist schon einmal ein guter Anfang.

von olibert (Gast)


Lesenswert?

Das ist kein Performance-Test, sondern nur die Ausfuehrung eines 
selbstgeschriebenen Programms in unterschiedlichen Betriebssystemen. 
Ausserdem geht die VM noch durch zusaetzliche Treiber. Zwei 
vergleichbare VMs auf dem gleichen System kaeme der Sache schon naehe).

Ueberlege mal, spaetestens bei den Disk I/O Werten wird die virtuelle 
Machine hinterhinken: Das Image-File deiner VM liegt irgendwo auf einem 
NTFS-Dateisystem (och) deiner Windows-Banane.

Ausserdem, wie sind die Resourcen der VM eingestellt (CPU, Memory,..) 
und wo ist der Engpass auf der Linux-Seite (CPU load, CPU queue length, 
paging activity, I/O response).

von Läubi .. (laeubi) Benutzerseite


Lesenswert?

Be Bo schrieb:
> Was ist so falsch darn, wenn man sich mal mit der Performance
> beschäftigt?

Es sit nur falsch am falschen Ende zu beginnen: 
http://c2.com/cgi/wiki?PrematureOptimization

von Tim (Gast)


Lesenswert?

> Wie würdet ihr denn ermitteln, wie Leistungsfähig eine...

- Skalierung
- RAM verbrauch
- Antwortzeit

Spielt aber bei kleinen Projekte keine rolle.
Ich würde auch das nehmen was ich besser kenne
bzw. das was besser geeignet ist.
Und bei einer Webanwendung würder ich
als aller erstes auf die Sicherheit schauen.

von Andy (Gast)


Lesenswert?

Zum Performancetesten würd ich folgendes empfehlen :

Dual Boot Installation (keine VMs ) Windows + Linux
Einen weiteren Rechner auf dem der Performancetest ausgeführt wird (OS 
egal )

Zum testen von Apps gibt es verschiedene Ansatzpunkte

1. Datenschicht ( Reines SQL ( Verbindung offen lassen  ) )
2. Serviceschicht (EJB / REST , SOAP, ...)
3. Webapps ( Apache JMeter http://jmeter.apache.org/ )

Es gibt ein paar Regeln:

1. JavaApps brauchen etwas Zeit um max. zu performen ( JIT Compiler ), 
d.h Apps werden zur Laufzeit optimiert

2. Klar definierten Ausgangszustand herstellen ( OS, Software, ... )

3. Klar definierten Test ( Aufpassen, dass die Test auch auf dem System 
laufen, d.h. 4231478932473 gleichzeitig laufende Testthreads sind keine 
gute Idee )

4. Ziel definieren ( GQM - Ansatz, d.h. nur messen, was man auch messen 
will )

5. Test mehrfach ausführen und Mittelwert/ Median berechnen

von Robert L. (lrlr)


Lesenswert?

>(keine VMs )

(gemietete) webserver laufen praktisch immer in VMs
also würd ich es auch so testen..

von Εrnst B. (ernst)


Lesenswert?

Robert L. schrieb:
> (gemietete) webserver laufen praktisch immer in VMs
> also würd ich es auch so testen..

Wenn die "Performance" schon vor der eigentlichen Planung soo 
furchtbar wichtig ist, dann kann das später nie und nimmer auf einem 
VM-Mini-Mietserver laufen.
Das muss zwangsläufig ein Root-Server-(Cluster) oder besser eine 
eigene Server-Farm werden.
Deshalb auch unbedingt so testen.

Dann: Ich bin schon gespannt auf dein Faceooglezon, wann isses denn 
fertig?

von Be B. (bebo)


Lesenswert?

Εrnst B✶ schrieb:
> Wenn die "Performance" schon vor der eigentlichen Planung soo
> furchtbar wichtig ist, dann kann das später nie und nimmer auf einem
> VM-Mini-Mietserver laufen.

Wer sagt denn, daß die Performance so furchtbar wichtig ist. Ich habe 
nie gesagt, daß es um absolute Performance geht. Sondern immer nur, daß 
es auf einem gegebenen System möglichst schnell laufen soll. Oder anders 
formuliert: Wenn bei angemietetem Webspace nur ein Bruchteil der 
Leistung vom Entwicklungssystem zur Verfügung steht, dann soll es eben 
auch mit dieser geringen Leistung noch zügig laufen.
Die ganzen vergleiche dienen nicht dazu, absolute Performancemaximierung 
zu betreiben, sondern sind nur ein Versuch, die relativ beste 
Performance zu erreichen. Und wenn ich weiß, daß z.B. 
Interpretersprachen langsammer sind, warum soll ich dann nicht gleich 
eine Compilersprache verwenden. Gleiches gilt für die Frameworks. Nur 
kann ich nicht alle testen. Also fragt man freudlich in einem Forum 
nach. Da bekommt man dann zur Antwort, daß man sich die falschen Ziele 
gesetzt hat. Nun ja, also beginnt man selber Tests zu machen.

Wenn Studenten Masterarbeiten schreiben ist das auch nichts anderes. Die 
meißten können mit ihrer Masterarbeit auch nichts anfangen, aber sie 
investieren trotzdem Zeit.

Gut, ich bekomme dafür kein Diplom, aber mich interessieren eben auch 
die Unterschiede zwischen den Frameworks und hier eben auch der 
Performance Aspekt.

Läubi .. schrieb:
> Es sit nur falsch am falschen Ende zu beginnen:
> http://c2.com/cgi/wiki?PrematureOptimization

Sehr guter Artikel. Aber im Artikel steht auch:

> "Let's just make the app run as a simple single-threaded CGI executable.
> We'll get the whole thing finished and then it will be easy to refactor
> it into a J2EE server later on."

Ich denke ein paar grundlegende Vorstellungen sollte man haben, bevor 
man anfängt. Optimieren was das Zeug hält kann man später, aber die 
Weichen schon mal in die richtige Richtung stellen sollte man möglichst 
früh. Ansonsten macht man nachher alles doppelt.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.