PHP5 Leistungsvergleich, Windows und Linux

8

Ich habe eine Frage zur Leistung von Symfony2.

Ich entwickle seit einigen Wochen mit Symfony2 unter Ubuntu 11.04, Apache 2.2.17, PHP 5.3.5, APC 3.1.9, kein xDebug

In der Entwicklungsumgebung war die in der Symfony2-Symbolleiste angegebene Zeit nie über 70 ms.

Heute habe ich versucht, meine App auf einer Windows 7-Umgebung zu installieren: Wampserver 2.2, PHP 5.3.8, Apache 2.2.21, APC 3.1.7, kein xDebug

Der Computer in der Windows-Umgebung ist viel besser als der auf Ubuntu (SSD, Quad-Core, usw.).

Und wenn ich die Anwendung in der Entwicklungsumgebung ausführe, zeigt die Symbolleiste immer mindestens 300 ms an.

Weißt du also, wie es möglich ist?

Danke!

BEARBEITEN: einen Link zu dem Thema gefunden: Ссылка

Ich habe das Problem mit der Funktion file_exists auch bemerkt (mit webgrind).

Also, irgendwelche Ideen?

Vielleicht wurde das Thema bereits besprochen, aber ich war überrascht, nichts Ähnliches zu finden.

    
Nanocom 12.10.2011, 13:44
quelle

4 Antworten

12

TL; DR; Setze realpath_cache_size auf einen Wert & gt; 1000

Edit 2: Problem in diesem PR gelöst: Versuchen Sie, realpath_cache_size von PHP.ini auf einen Wert & gt; 1000 Vor kurzem wurde eine Symfony-Anforderung hinzugefügt, die dieses Problem behebt: Ссылка

Bearbeiten: Ich habe gerade diese Antwort gesehen: Ссылка Und es hat die Seitengenerierungszeit um 4 auf Windows reduziert, wenn ich realpath_cache_size = 4096k in meiner php.ini (!)

gesetzt habe

Alte Antwort:

Also habe ich einen Vergleich zwischen beiden mit webgrind gemacht:

Auf Windows (schneller Computer), genannt app_dev.php:

Sie sehen also, dass die Websymbolleiste eine Zeitgenerierung von 764ms anzeigt (erhöht durch xDebug und Profiling, aber immer noch relevant). Webgrind zeigt:

  • 651 ruft file_exists () für eine Zeit von 232ms auf (was sehr viel ist!)
  • 603 Aufrufe von filemtime () (211ms)
  • 230 Aufrufe an UniversalClassLoader- & gt; loadClass () (119ms)
  • 230 Aufrufe an UniversalClassLoader- & gt; findFile () (38ms)

Auf Linux (langsamer Computer), app_dev.php:

298ms der gesamten Generationszeit (das ist mehr als zweimal weniger als bei Windows).

  • 237 Aufrufe an UniversalClassLoader- & gt; findFile () (36ms = & gt; 4 mal weniger)
  • 237 Aufrufe an UniversalClassLoader- & gt; loadClass () (20ms = & gt; 2 mal weniger)
  • 623 ruft file_exists () auf (nur 4ms !!!)
  • 605 Aufrufe an filemtime () (nur 4ms !!!)

Das Problem scheint file_exists () und filemtime () zu sein, die unter Windows viel langsamer sind als unter Linux. Unter Windows sucht PHP 60% der Zeit nach Dateien mit file_exists, filemtime, loadClass oder findFile. Ist das ein bekanntes Problem?

Edit: Das Problem ist also nur für die Dev-Umgebung, in der Produktion werden keine file_exists ausgeführt, da alles zwischengespeichert ist.

    
Nanocom 14.10.2011, 12:39
quelle
6

Ich habe gerade angefangen, mit Symfony2 unter Windows zu entwickeln und das war ein absoluter Schmerz in meinem Arsch - Ich habe xcache, apc und eaccelerator getestet, was fast keinen Unterschied macht oder einfach zusammen mit xdebug abgestürzt ist.

Jetzt habe ich WinCache von Microsoft entdeckt - was Symfony2 unter Windows unglaublich schnell gemacht hat ... Meine Anfragen haben etwas zwischen 1.5s und 3s - mit WinCache bis zu 200ms . Und es stört nicht einmal xdebug - Profiling und Debugging funktioniert immer noch wie ein Charme.
Bearbeiten: Dies ist alles über die Dev-Umgebung.

Der einzige Nachteil ist, dass es nur auf NTS php läuft und ich denke, die Apache-Module erfordert ts - wenn Sie es mit fcgid ausführen, werden Sie keine Probleme haben.

Ich kann nicht glauben, dass ich so viele Jahre ohne dieses Monster gearbeitet habe ...

Links:
WinCache auf php.net
Offizielle WinCache-Site
Binaries

    
Strayer 28.02.2012 18:01
quelle
2

Interessant gefunden!

Ich würde sagen, da dies überhaupt kein symfony2 Problem ist, muss es in PHP binary behoben werden.

Aber wer betreibt seinen Webserver überhaupt unter Windows? : D

    
mblaettermann 12.10.2011 16:05
quelle
1

Probieren Sie es mit ApcUniversalClassLoader aus Ссылка

    
webda2l 18.10.2011 10:54
quelle

Tags und Links