Hallo
Mir ist aufgefallen, dass ein Script unter Windows deutlich zu lange gebaucht hat, weshalb ich ein paar Tests gemacht habe.
vServer E3 1270 @ 3.40GHz - Linux (SSD) PHP 7.0.32
test_pruefeifelseanweisungen : 0.187 sec.
test_durchlaufeschleifen : 0.254 sec.
addslashes.......................0.096 sec.
chunk_split......................0.040 sec.
metaphone........................0.434 sec.
strip_tags.......................0.192 sec.
md5..............................0.145 sec.
sha1.............................0.217 sec.
strtoupper.......................0.059 sec.
strtolower.......................0.060 sec.
strrev...........................0.062 sec.
strlen...........................0.018 sec.
soundex..........................0.033 sec.
ord..............................0.019 sec.
test_textveraendern : 1.373 sec.
test_mathematischeaufgaben : 0.339 sec.
--------------------------------------
Total time: : 2.153 sec.
vServer XEON CPU undefiniert (ab 1.500MhZ) - Linux (SSD) PHP 7.1.25
test_pruefeifelseanweisungen : 0.304 sec.
test_durchlaufeschleifen : 0.325 sec.
addslashes.......................0.101 sec.
chunk_split......................0.051 sec.
metaphone........................0.291 sec.
strip_tags.......................0.168 sec.
md5..............................0.217 sec.
sha1.............................0.276 sec.
strtoupper.......................0.080 sec.
strtolower.......................0.071 sec.
strrev...........................0.077 sec.
strlen...........................0.024 sec.
soundex..........................0.041 sec.
ord..............................0.024 sec.
test_textveraendern : 1.420 sec.
test_mathematischeaufgaben : 0.470 sec.
--------------------------------------
Total time: : 2.519 sec.
vServer XEON CPU undefiniert* - Linux (NVMe) PHP 7.3.1
test_pruefeifelseanweisungen : 0.123 sec.
test_durchlaufeschleifen : 0.220 sec.
addslashes.......................0.103 sec.
chunk_split......................0.031 sec.
metaphone........................0.237 sec.
strip_tags.......................0.081 sec.
md5..............................0.168 sec.
sha1.............................0.228 sec.
strtoupper.......................0.064 sec.
strtolower.......................0.056 sec.
strrev...........................0.062 sec.
strlen...........................0.017 sec.
soundex..........................0.028 sec.
ord..............................0.018 sec.
test_textveraendern : 1.093 sec.
test_mathematischeaufgaben : 0.338 sec.
--------------------------------------
Total time: : 1.774 sec.
*Dies ist der günstigste Server (keine 10 Euro) mit nur einem vCore, bringt aber mit Abstand die besten Ergebnisse.
DEV-PC i7 - 6700k @ 4.700 - Windows 10 (SSD & RAMDisk) PHP 7.3.1
test_mathematischeaufgaben : 0.226 sec.
addslashes.......................0.018 sec.
chunk_split......................0.020 sec.
metaphone........................9.611 sec.
strip_tags.......................0.056 sec.
md5..............................0.110 sec.
sha1.............................0.121 sec.
strtoupper.......................1.710 sec.
strtolower.......................1.444 sec.
strrev...........................0.028 sec.
strlen...........................0.011 sec.
soundex..........................0.088 sec.
ord..............................0.011 sec.
test_textveraendern : 13.228 sec.
test_durchlaufeschleifen : 0.222 sec.
test_pruefeifelseanweisungen : 0.154 sec.
--------------------------------------
Total time: : 13.83 sec.
Ich habe mir eigentlich vom i7 die beste Leistung erwartet. Aber hier brechen die Laufzeiten durch die Decke.
Da ich eh schon dabei war, habe ich auch noch Lesen und Schreiben mit file_[get|put]_contents getestet und wäre dabei fast aus dem Stuhl gekippt.
vServer E3 1270 @ 3.40GHz - Linux (SSD) PHP 7.0.32
test_schreibe_1000_x_1mb : 10.082 sec.
test_schreibe_1000_x_10kb : 0.469 sec.
test_lese_1000_x_1mb : 0.237 sec.
test_lese_10k_x_10kb : 0.289 sec.
--------------------------------------
Total time: : 11.077 sec.
vServer XEON CPU undefiniert (ab 1.500MhZ) - Linux (SSD) PHP 7.1.25
test_schreibe_1000_x_1mb : 3.056 sec.
test_schreibe_1000_x_10kb : 0.103 sec.
test_lese_1000_x_1mb : 0.321 sec.
test_lese_10k_x_10kb : 0.449 sec.
--------------------------------------
Total time: : 3.929 sec.
vServer XEON CPU undefiniert* - Linux (NVMe) PHP 7.3.1
test_schreibe_1000_x_1mb : 0.012 sec.
test_schreibe_1000_x_10kb : 0.011 sec.
test_lese_1000_x_1mb : 0.334 sec.
test_lese_10k_x_10kb : 0.148 sec.
--------------------------------------
Total time: : 0.505 sec.
DEV-PC i7 - 6700k @ 4.700 - Windows 10 (RAMDisk) PHP 7.3.1
test_lese_10k_x_10kb : 0.472 sec.
test_lese_1000_x_1mb : 0.339 sec.
test_schreibe_1000_x_10kb : 0.110 sec.
test_schreibe_1000_x_1mb : 0.857 sec.
--------------------------------------
Total time: : 1.778 sec.
DEV-PC i7 - 6700k @ 4.700 - Windows 10 (SSD) PHP 7.3.1
test_lese_10k_x_10kb : 0.509 sec.
test_lese_1000_x_1mb : 0.397 sec.
test_schreibe_1000_x_10kb : 0.234 sec.
test_schreibe_1000_x_1mb : 1.201 sec.
--------------------------------------
Total time: : 2.341 sec.
Ich habe die Anzahl der Schreib- und Lesevorgänge deutlich erhöht und die Festplatte überwacht. Dabei bin ich nie über 24MB/s gekommen. Da die Unterschiede zwischen SSD und RAMDisk so gering sind, die Unterschiede zu NVMe aber so hoch sind, hat sich mir dann doch die Vermutung aufgedrängt, dass PHP unter Windows deutlich ausbremst.
Habe ich mein PHP irgendwie falsch konfiguriert, liegt es an der CPU oder ist PHP unter Windows einfach langsamer?
PS: Mir ist absolut klar, dass solche Benchmarks nur eine minimale Aussagekraft für normale PHP-Anwendungen hat, da eine normale Anwendung keine 10 Mio. If-Else Prüfungen hintereinander durchläuft oder 300.000 mal md5() einsetzt.
Mir ist aufgefallen, dass ein Script unter Windows deutlich zu lange gebaucht hat, weshalb ich ein paar Tests gemacht habe.
vServer E3 1270 @ 3.40GHz - Linux (SSD) PHP 7.0.32
test_pruefeifelseanweisungen : 0.187 sec.
test_durchlaufeschleifen : 0.254 sec.
addslashes.......................0.096 sec.
chunk_split......................0.040 sec.
metaphone........................0.434 sec.
strip_tags.......................0.192 sec.
md5..............................0.145 sec.
sha1.............................0.217 sec.
strtoupper.......................0.059 sec.
strtolower.......................0.060 sec.
strrev...........................0.062 sec.
strlen...........................0.018 sec.
soundex..........................0.033 sec.
ord..............................0.019 sec.
test_textveraendern : 1.373 sec.
test_mathematischeaufgaben : 0.339 sec.
--------------------------------------
Total time: : 2.153 sec.
vServer XEON CPU undefiniert (ab 1.500MhZ) - Linux (SSD) PHP 7.1.25
test_pruefeifelseanweisungen : 0.304 sec.
test_durchlaufeschleifen : 0.325 sec.
addslashes.......................0.101 sec.
chunk_split......................0.051 sec.
metaphone........................0.291 sec.
strip_tags.......................0.168 sec.
md5..............................0.217 sec.
sha1.............................0.276 sec.
strtoupper.......................0.080 sec.
strtolower.......................0.071 sec.
strrev...........................0.077 sec.
strlen...........................0.024 sec.
soundex..........................0.041 sec.
ord..............................0.024 sec.
test_textveraendern : 1.420 sec.
test_mathematischeaufgaben : 0.470 sec.
--------------------------------------
Total time: : 2.519 sec.
vServer XEON CPU undefiniert* - Linux (NVMe) PHP 7.3.1
test_pruefeifelseanweisungen : 0.123 sec.
test_durchlaufeschleifen : 0.220 sec.
addslashes.......................0.103 sec.
chunk_split......................0.031 sec.
metaphone........................0.237 sec.
strip_tags.......................0.081 sec.
md5..............................0.168 sec.
sha1.............................0.228 sec.
strtoupper.......................0.064 sec.
strtolower.......................0.056 sec.
strrev...........................0.062 sec.
strlen...........................0.017 sec.
soundex..........................0.028 sec.
ord..............................0.018 sec.
test_textveraendern : 1.093 sec.
test_mathematischeaufgaben : 0.338 sec.
--------------------------------------
Total time: : 1.774 sec.
*Dies ist der günstigste Server (keine 10 Euro) mit nur einem vCore, bringt aber mit Abstand die besten Ergebnisse.
DEV-PC i7 - 6700k @ 4.700 - Windows 10 (SSD & RAMDisk) PHP 7.3.1
test_mathematischeaufgaben : 0.226 sec.
addslashes.......................0.018 sec.
chunk_split......................0.020 sec.
metaphone........................9.611 sec.
strip_tags.......................0.056 sec.
md5..............................0.110 sec.
sha1.............................0.121 sec.
strtoupper.......................1.710 sec.
strtolower.......................1.444 sec.
strrev...........................0.028 sec.
strlen...........................0.011 sec.
soundex..........................0.088 sec.
ord..............................0.011 sec.
test_textveraendern : 13.228 sec.
test_durchlaufeschleifen : 0.222 sec.
test_pruefeifelseanweisungen : 0.154 sec.
--------------------------------------
Total time: : 13.83 sec.
Ich habe mir eigentlich vom i7 die beste Leistung erwartet. Aber hier brechen die Laufzeiten durch die Decke.
Da ich eh schon dabei war, habe ich auch noch Lesen und Schreiben mit file_[get|put]_contents getestet und wäre dabei fast aus dem Stuhl gekippt.
vServer E3 1270 @ 3.40GHz - Linux (SSD) PHP 7.0.32
test_schreibe_1000_x_1mb : 10.082 sec.
test_schreibe_1000_x_10kb : 0.469 sec.
test_lese_1000_x_1mb : 0.237 sec.
test_lese_10k_x_10kb : 0.289 sec.
--------------------------------------
Total time: : 11.077 sec.
vServer XEON CPU undefiniert (ab 1.500MhZ) - Linux (SSD) PHP 7.1.25
test_schreibe_1000_x_1mb : 3.056 sec.
test_schreibe_1000_x_10kb : 0.103 sec.
test_lese_1000_x_1mb : 0.321 sec.
test_lese_10k_x_10kb : 0.449 sec.
--------------------------------------
Total time: : 3.929 sec.
vServer XEON CPU undefiniert* - Linux (NVMe) PHP 7.3.1
test_schreibe_1000_x_1mb : 0.012 sec.
test_schreibe_1000_x_10kb : 0.011 sec.
test_lese_1000_x_1mb : 0.334 sec.
test_lese_10k_x_10kb : 0.148 sec.
--------------------------------------
Total time: : 0.505 sec.
DEV-PC i7 - 6700k @ 4.700 - Windows 10 (RAMDisk) PHP 7.3.1
test_lese_10k_x_10kb : 0.472 sec.
test_lese_1000_x_1mb : 0.339 sec.
test_schreibe_1000_x_10kb : 0.110 sec.
test_schreibe_1000_x_1mb : 0.857 sec.
--------------------------------------
Total time: : 1.778 sec.
DEV-PC i7 - 6700k @ 4.700 - Windows 10 (SSD) PHP 7.3.1
test_lese_10k_x_10kb : 0.509 sec.
test_lese_1000_x_1mb : 0.397 sec.
test_schreibe_1000_x_10kb : 0.234 sec.
test_schreibe_1000_x_1mb : 1.201 sec.
--------------------------------------
Total time: : 2.341 sec.
Ich habe die Anzahl der Schreib- und Lesevorgänge deutlich erhöht und die Festplatte überwacht. Dabei bin ich nie über 24MB/s gekommen. Da die Unterschiede zwischen SSD und RAMDisk so gering sind, die Unterschiede zu NVMe aber so hoch sind, hat sich mir dann doch die Vermutung aufgedrängt, dass PHP unter Windows deutlich ausbremst.
Habe ich mein PHP irgendwie falsch konfiguriert, liegt es an der CPU oder ist PHP unter Windows einfach langsamer?
PS: Mir ist absolut klar, dass solche Benchmarks nur eine minimale Aussagekraft für normale PHP-Anwendungen hat, da eine normale Anwendung keine 10 Mio. If-Else Prüfungen hintereinander durchläuft oder 300.000 mal md5() einsetzt.
Kommentar