techfrees PHP-Benchmark

MR 20160524T21:50:56Z 000 <techfree@webchat> Gerade einige Speed-Tests für PHP-Code gemacht :D
MR 20160524T21:51:37Z 000 <techfree@webchat> Bei 100.000 if-Abfragen fällt es schon fast auf, ob man bei einzelnen Ausführungen mit oder ohne geschweifte Klammern macht :D
MR 20160524T21:51:50Z 000 <techfree@webchat> Nämlich etwa 1 Sekunde :D
MR 20160524T21:53:10Z 000 <root> und das soll uns was sagen? Dass PHP scheiße ist?
MR 20160524T21:53:17Z 000 <root> das war auch so bereits bekannt :P
MR 20160524T21:53:21Z 000 <techfree@webchat> Nein :(
MR 20160524T21:53:28Z 000 <techfree@webchat> Dass ich auf die Performance meiner TE achte.
MR 20160524T21:53:49Z 000 <root> falsch
MR 20160524T21:53:56Z 000 <Lulu> Und, was ist fixer? :D
MR 20160524T21:54:13Z 000 <root> wenn es einen Performance-Unterschied zur Laufzeit macht, ob man if(x) { y(); } oder if(x) y(); macht, dann ist der Interpreter einfach scheiße :D
MR 20160524T21:54:39Z 000 <techfree@webchat> Mh, mag sein, aber ich achte darauf!
MR 20160524T21:54:46Z 000 <techfree@webchat> if(x) y();
MR 20160524T21:54:55Z 000 <techfree@webchat> Ist bei 100.000 Ausführungen um 1 Sekunde schneller.
MR 20160524T21:54:55Z 000 <root> irgendwie würds mich allerdings wundern, wenn das tatsächlich einen Unterschied macht … so blöd kann ein Interpreter-Bastler doch gar nicht sein
MR 20160524T21:55:12Z 000 <techfree@webchat> if(x) y(); ist also doppelt so schnell.
MR 20160524T21:55:13Z 000 <techfree@webchat> ;)
MR 20160524T21:55:22Z 000 <techfree@webchat> Denn if(x) { y(); }  braucht 2 Sekunden.
MR 20160524T21:55:31Z 000 <root> wie wärs, wenn du mal richtig misst?
MR 20160524T21:55:41Z 000 <techfree@webchat> Hab ich :D
MR 20160524T21:55:48Z 000 <root> wie denn?
MR 20160524T21:56:10Z 000 <techfree@webchat> Microtime vor Ausführung, nach Ausführung und dann eine Differenz errechnet.
MR 20160524T21:56:15Z 000 <root> au!
MR 20160524T21:56:19Z 000 <techfree@webchat> Nichts au.
MR 20160524T21:56:21Z 000 <root> doch
MR 20160524T21:56:24Z 000 <techfree@webchat> Nein.
MR 20160524T21:56:26Z 000 <root> das ist nicht richtiges Messen
MR 20160524T21:56:31Z 000 <techfree@webchat> Doch ist es :)
MR 20160524T21:56:33Z 000 <root>MR 20160524T21:56:39Z 000 <techfree@webchat> Du hast wohl keine Ahnung von PHP :D
MR 20160524T21:56:47Z 000 <techfree@webchat> Deswegen bist du auch so pessimistisch.
MR 20160524T21:56:50Z 000 <root> nein
MR 20160524T21:56:54Z 000 <techfree@webchat> Doch.
MR 20160524T21:57:25Z 000 <root> wenn du das richtig messen willst: ~1M startup, wo du die Werte verwirfst. Dann 1M das mit if(x) y(); und dann 1M das mit {}. Und dann schauen was rauskommt.
MR 20160524T21:57:42Z 000 <root> und das ist auch nur ein Bruchteil der Wahrheit … aber schon mal besser, als was du da »gemessen« hast
MR 20160524T21:57:59Z 000 <techfree@webchat> Das macht absolut null Unterschied du N00b.
MR 20160524T21:58:04Z 000 <root> :D
MR 20160524T21:58:09Z 000 <root> du wirst es ja wissen :D
MR 20160524T21:58:11Z 000 <techfree@webchat> :D
MR 20160524T21:58:14Z 000 <techfree@webchat> Ja :D
MR 20160524T21:58:48Z 000 <root> also wenn du das so z.B. in Java machst (spätestens ab Graal) fliegst du übrigens immer noch auf die Schnauze, und ohne warmup sowieso :D
MR 20160524T21:59:02Z 000 <techfree@webchat> Java ist aber nicht PHP :p
MR 20160524T21:59:04Z 000 <root> und bei PHP und überall sonst ists ähnlich
MR 20160524T21:59:14Z 000 <techfree@webchat> PHP ist zu nix ähnlich.
MR 20160524T21:59:34Z 000 <root> abgesehen davon müsstest du den gesamten Benchmark noch öfter laufen lassen, mitteln usw. Aber ja, du weißt ja natürlich alles zum Thema :)
MR 20160524T21:59:53Z 000 <techfree@webchat> Habe ich doch oô
MR 20160524T22:00:06Z 000 <techfree@webchat> Ich habe bei 1000 mal den Durchschnittswert errechnet.
MR 20160524T22:00:17Z 000 <techfree@webchat> Also ja, ich weiß alles :)
MR 20160524T22:01:32Z 000 <root> wart mal … was hast du getan? »$avg = 0; for($i = 0; $i < 1000; $i++) { $t = microtime(); if(x) y(); $time = microtime() - $t; $avg += $time; } $avg /= 1000;«?
MR 20160524T22:01:57Z 000 <techfree@webchat> Lol, nein.
MR 20160524T22:02:14Z 000 <root> sondern?
MR 20160524T22:02:47Z 000 <techfree@webchat> Ich habe 1000 mal die 100.000 Durchläufe laufen lassen :p
MR 20160524T22:02:56Z 000 <root> achso
MR 20160524T22:03:09Z 000 <root> immerhin schon mal besser
MR 20160524T22:03:13Z 000 <root> (als erwartet)
MR 20160524T22:03:32Z 000 <root> ist zwar immer noch weit von »richtig« entfernt, aber egal :P
MR 20160524T22:03:41Z 000 <techfree@webchat> Nö.
MR 20160524T22:03:49Z 000 <root> hm … magst du das Benchmark-Skript mal rausrücken?
MR 20160524T22:04:11Z 000 <techfree@webchat> Wieviel zahlst du?
MR 20160524T22:04:42Z 000 <root> nix, warum auch? Ich würd nur gern wenn schon was zu deinem Ding vergleichbares testen können :P
MR 20160524T22:04:48Z 000 <root> rein aus Interesse
MR 20160524T22:05:06Z 000 <techfree@webchat> Wenn Interesse besteht, dann kann man dafür Geld verlangen :)
MR 20160524T22:05:22Z 000 <techfree@webchat> Nennt man Handelswesen :p
MR 20160524T22:05:26Z 000 <techfree@webchat> Also, was zahlste?
MR 20160524T22:05:38Z 000 <root> ernsthaft? du willst für einen Benchmark, den man in 2min hinbekommt Geld verlangen?
MR 20160524T22:05:49Z 000 <techfree@webchat> Ja :p
MR 20160524T22:05:51Z 000 <root> es ging um »vergleichbar«, darum fragte ich übrigens :P
MR 20160524T22:06:06Z 000 <techfree@webchat> Es ist immerhin mein Benchmark :p
MR 20160524T22:06:22Z 000 <techfree@webchat> Und er ist weder Open Source noch Freeware :p
MR 20160524T22:07:11Z 000 <root> ok, frag ich halt anders: tut »y()« irgendwas spezielles, und ist »x« irgend eine spezielle Bedingung? Ist die konstant true oder false? Oder wird die bei jedem Durchlauf neu berechnet?
MR 20160524T22:07:49Z 000 <techfree@webchat> Ja, ja, nein
MR 20160524T22:08:36Z 000 <root> 2. Runde: y() tut immer das selbe, langweilige, und einzig die Klammern beim if(x) y(); sind jeweils anders? Und es steht dort if(true) y();?
MR 20160524T22:08:49Z 000 <techfree@webchat> Mehr sage ich dir nicht :)
MR 20160524T22:09:14Z 000 <root> hast du etwa Angst, dass man dir ein gegenteiliges Benchmark-Ergebnis bringt? :D
MR 20160524T22:09:20Z 000 <techfree@webchat> Nein, ich möchte Geld :D
MR 20160524T22:10:14Z 000 <root> vergiss es, für sowas würden dir nur Entmündigte Geld geben
MR 20160524T22:10:23Z 000 <root> und die dürfen nicht :D
MR 20160524T22:10:37Z 000 <techfree@webchat> :p
MR 20160524T22:52:24Z 002 <root> techfree@webchat: du hast übrigens scheiße gelabbert:
avg without {}: 1.769930
avg with {}: 1.759439
MR 20160524T22:52:37Z 000 <techfree@webchat> Nope.
MR 20160524T22:52:40Z 000 <seederscloud@webchat> Haben hilfe seitens 200 anwälten, 60codern, 100saatgutproduzenten und ca 400.000 kontakte
MR 20160524T22:52:42Z 000 <Omnomnomnivor> Hmmm, eine hochcervicale Ischämie infolge eines MIs würde viel erklären bei techfree
MR 20160524T22:53:23Z 000 <root> techfree@webchat: dann beweise mir das Gegenteil :P
MR 20160524T22:53:31Z 000 <root> ich kann übrigens im Gegensatz zu dir den Code rauslassen :P
MR 20160524T22:53:39Z 000 <techfree@webchat> Lass ihn doch raus :)
MR 20160524T22:56:37Z 000 <techfree@webchat> Ah, kommt der Code wohl doch nicht :p
MR 20160524T22:58:36Z 000 <seederscloud@webchat> Codevis in entwicklung is nu ned viel... Geht jz flott sobald ich wieder zeit finde bin noch am pakete senden und buckle zzt 70h woche... Auch um hilfe zu organisieren weil viele zu fauls sind das alles zu lesen... Gut ich kanns ned ändern aber ich versuchs
MR 20160524T22:59:06Z 000 <root> techfree@webchat: http://hackyourlife.lima-city.de/techfree/microbenchmark.phps :P
MR 20160524T22:59:55Z 000 <root> bzw ein minimaler Fehler is drin, mal schaun ob du den siehst :P
MR 20160524T23:00:16Z 000 <techfree@webchat> Damn :o
MR 20160524T23:00:18Z 000 <techfree@webchat> Stimmt.
MR 20160524T23:00:30Z 000 <techfree@webchat> microtime hat den Para get_as_float :o
MR 20160524T23:00:31Z 000 <techfree@webchat> XD
MR 20160524T23:00:40Z 000 <techfree@webchat> Ich dachte schon wieder es kein float ist XD
MR 20160524T23:01:10Z 000 <techfree@webchat> Was soll $r sein?
MR 20160524T23:01:15Z 000 <Lulu> Der root bastelt heimlich PHP!!111einself
MR 20160524T23:01:16Z 000 <seederscloud@webchat> Es ich würde nen min setup api+db bei euch ablegen... Als versteckten ausweichserver gerne auch öffentlich aber arbeiten mit cloudns usw um alle hintertürchen wie mans abdrehen kann zu beseitigen... Alter stand auf gratissamen.top... Spiel euch ggf den neuen hoch noch is es nicht sicher, nicht optimiert noch sinst was nur konzept, db, und helfer habi
MR 20160524T23:01:30Z 000 <techfree@webchat> $j, $k, $,i sind für Zählungen Standard.
MR 20160524T23:01:34Z 000 <techfree@webchat> $i*
MR 20160524T23:03:11Z 000 <root> is doch eh?
MR 20160524T23:03:24Z 000 <seederscloud@webchat> Php is ned meins bin nur js crack, die ganze sache wird als vollajax mit caching auf allen laufen was n netz hat wurscz wie dachte nur ich frag alle ;) euch inkl die kostenlos was anbieten vorher obs auch recht is werde 20 server selbst anmieten...
MR 20160524T23:04:10Z 000 <techfree@webchat> for($n = 0; $n < $warmup; $n++) {
MR 20160524T23:04:17Z 000 <techfree@webchat> for($n = 0; $n <= $warmup; $n++) {
MR 20160524T23:04:21Z 000 <techfree@webchat> 8)
MR 20160524T23:04:33Z 000 <techfree@webchat> Sonst läuft es einmal zu wenig durch.
MR 20160524T23:04:34Z 000 <seederscloud@webchat> Die php api is 100% unsicher aber man kann zzt nur die entwicklungsdb löschen das kratz mich ned ;) langsam is auch wurscht kommt auf lighthttp, nginx und apache server gemischt wird auf sllen geprüfet
MR 20160524T23:04:42Z 000 <techfree@webchat> Ach seeders, bitte halt dein MAul.
MR 20160524T23:04:53Z 000 <seederscloud@webchat> Ok
MR 20160524T23:05:09Z 000 <techfree@webchat> Oh, so einfach?
MR 20160524T23:05:11Z 000 <techfree@webchat> Nice.
MR 20160524T23:06:02Z 000 <root> what?!
MR 20160524T23:06:26Z 000 <root> for($n = 0; $n < $N; $n++) → läuft exakt $N mal …
MR 20160524T23:06:34Z 000 <root> mute seederscloud@webchat
MR 20160524T23:06:34Z 000 <Orakel> muted "seederscloud@webchat"
MR 20160524T23:07:02Z 000 <techfree@webchat> Ah, stimmt.
MR 20160524T23:07:08Z 000 <techfree@webchat> Ich machs immer mit $i = 1
MR 20160524T23:07:28Z 000 <root> du bist ja auch kein Informatiker
MR 20160524T23:07:38Z 000 <techfree@webchat> Doch :p
MR 20160524T23:07:56Z 000 <techfree@webchat> Bin zu faul zu schauen.
MR 20160524T23:07:59Z 000 <techfree@webchat> Wo ist er dennß
MR 20160524T23:08:00Z 000 <techfree@webchat> ?
MR 20160524T23:08:10Z 000 <root> ein Informatiker zählt NIE von 1 weg! :P
MR 20160524T23:08:23Z 000 <techfree@webchat> Doch :c
MR 20160524T23:09:06Z 000 <Lulu> root: Und wenn er von 1 runter zählen will? *duck*
MR 20160524T23:10:46Z 000 <techfree@webchat> Also wo der Fehler?
MR 20160524T23:11:28Z 002 <root> der Fehler ist, dass du mir nicht erklären kannst, warum das rauskommt:
avg without {}: 1.690956
avg with {}: 1.684167
MR 20160524T23:12:02Z 000 <techfree@webchat> printf("avg without {}: %f\n", $avg);
MR 20160524T23:12:12Z 000 <techfree@webchat> printf("avg with {}: %f\n", $avg);
MR 20160524T23:12:14Z 000 <techfree@webchat> :p
MR 20160524T23:12:29Z 000 <techfree@webchat> $avg = 0.0;
MR 20160524T23:12:37Z 000 <techfree@webchat> $avg += $now - $t;
MR 20160524T23:12:42Z 000 <techfree@webchat>  $avg /= $passes;
MR 20160524T23:12:45Z 000 <techfree@webchat> Deshalb.
MR 20160524T23:13:16Z 000 <root> und weiter? Wieso is das mit if(x) { y() } genauso schnell wie if(x) y(); (bzw in wenigen Fällen sogar schneller)?
MR 20160524T23:13:28Z 000 <root> laut dir müsste da ja ganz deutlich 1s Unterschied sein
MR 20160524T23:13:49Z 000 <techfree@webchat> Weiß nicht c:
MR 20160524T23:13:57Z 000 <root> na also
MR 20160524T23:14:10Z 000 <root> aber du benchmarkst ja richtig und so … war eh klar :D
MR 20160524T23:14:16Z 000 <techfree@webchat> Tue ich!
MR 20160524T23:14:27Z 000 <techfree@webchat> Aber ich nutze jetzt einfach deins, weil da tolle Variablen sind.
MR 20160524T23:14:30Z 000 <Lulu> root: Seine Mailadressen sind ja auch immer richtig. :)
MR 20160524T23:14:34Z 000 <root> stimmt
MR 20160524T23:14:35Z 000 <techfree@webchat> :p

Info

https://hackyourlife.lima-city.de/techfree/microbenchmark.phps
#!/bin/phpp
<?php
function f() {
    $r = 0;
    for($i = 0; $i < 10000; $i++) {
        $r += $i;
    }
}
$warmup = 5;
$passes = 10;
$iterations = 10000;
$avg = 0.0;
for($n = 0; $n < $warmup; $n++) {
    $t = microtime(true);
    for($i = 0; $i < $iterations; $i++) {
        if(true)
            f();
    }
    $now = microtime(true);
    $avg += $now - $t;
}
$avg = 0.0;
for($n = 0; $n < $passes; $n++) {
    $t = microtime(true);
    for($i = 0; $i < $iterations; $i++) {
        if(true)
            f();
    }
    $now = microtime(true);
    $avg += $now - $t;
}
$avg /= $passes;
printf("avg without {}: %f\n", $avg);
for($n = 0; $n < $warmup; $n++) {
    $t = microtime(true);
    for($i = 0; $i < $iterations; $i++) {
        if(true) {
            f();
        }
    }
    $now = microtime(true);
    $avg += $now - $t;
}
$avg = 0.0;
for($n = 0; $n < $passes; $n++) {
    $t = microtime(true);
    for($i = 0; $i < $iterations; $i++) {
        if(true) {
            f();
        }
    }
    $now = microtime(true);
    $avg += $now - $t;
}
$avg /= $passes;
printf("avg with {}: %f\n", $avg);