3v4l.org

run code in 200+ php & hhvm versions
Bugs & Features
<script type="text/javascript"> function winoeff (adr,width,height) { mywin = window.open(adr, "help", "width="+ width + ",height=" + height +",scrollbars=yes"); mywin.focus(); } </script> </head> <body marginwidth=42 > <?php include ('0_def.inc') ; echo $name_of_user_db ; include ('post.inc') ; if (isset($go) == 0) {$go = 0 ;} if ($go == 0 || $go == 1 || $go == 11) { include ('0_dbuser.inc') ; include ('post_login.inc'); } if (isset($user) == 0) {$user = 'egal' ;} if (isset($state) == 0) {$state = 'egal' ;} if (isset($city) == 0) {$city = 'egal' ;} if (isset($affil) == 0) {$affil = 'egal' ;} // echo "GO = ".$go."<p>"; if ($go != 0 && $go != 1 && $go != 11) { $name_of_db = "mopsmap_".$user.".db" ; } include ('0_dbdef.inc') ; ?> <table><tr><td height=30>&nbsp;</td></tr></table> <?php if ($go != 999) { echo"<h1>Welcome to MOPSMAP &nbsp; <img border=1 align=right src='logo_ani.gif'></h1>" ; } if ($go == 0) { include ('give_pw.inc'); } // = 1 alter User hat Kennung eingegeben // =11 neuer User will sich registieren if ($go == 11) { include ('register.inc'); } // = 0 (zur Neueingabe oder Einloggen) // *** bekannter User if ($go == 1) { include ('check_pw.inc'); } // = 10 wenn gültiges PW -> ohne "Neustart von mopsmap" // = 0 wenn ungültiges PW if ($go == 10) { include ('find_prev_jobs.inc'); // für das Auswahlmenü include ('find_lib_agv.inc'); // liefert libagv_name[:] für die Pulldownmenüs include ('find_priv_agv.inc'); // liefert privagv_name[:] für die Pulldownmenüs include ('show_prev_jobs.inc'); } // wenn keine alten Jobs // "subs/set_defaults" <- "subs/select_from_mopsmap_agv_lib.sub" // "subs/insert_into_mopsmap_agv" // "subs/insert_into_mopsmap_basic[mopsmap_basic_tmp]" // immer: update_job="n", $new_jobname definiert // = 2 keine alten Jobs existieren, neuer Default-Job kreiert // = 21 alter oder neuer Job // = 27 OPAC Aerosoltyp if ($go == 21) { include ('copy_prev_job.inc'); // Arbeitskopie (tmp_jobid defined) // "subs/select_from_mopsmap_basic[mopsmap_basic]" // "subs/select_from_mopsmap_agv" // "subs/insert_into_mopsmap_agv" (Kopie unter neuem Namen) // "subs/insert_into_mopsmap_basic[mopsmap_basic_tmp]" // "subs/find_agv_from_archives" // oder Defaultwerte (tmp_jobid defined) // "subs/set_defaults" // "subs/insert_into_mopsmap_agv" // "subs/insert_into_mopsmap_basic[mopsmap_basic_tmp]" // "subs/find_agv_from_archives" include ('menu.inc') ; } // "subs/select_from_mopsmap_basic[mopsmap_basic_tmp]" // "subs/select_from_mopsmap_agv" // "find_lib_agv.inc": liefert libagv_name[:] für die Pulldownmenüs // "find_priv_agv.inc": liefert privagv_name[:] für die Pulldownmenüs // "subs/find_agv_from_archives": liefert lib_agv[:] und priv_agv[:] // = 22 Option: private AGVs updaten // = 32 Option: library AGVs anzeigen // = 3 wenn Fehler // = 3 wenn OnChange // = 6 wenn keine Fehler // = 8 Original-Job wird gelöscht // = 10 an Anfang zur Jobauswahl if ($go == 22) { include ('show_priv_agv.inc') ; } // zeigt alle privaten AGVs // = 23 Änderungen erwünscht // = 25 Neueintrag, wenn bisher leer // = 2 wenn keine Änderungen gewünscht if ($go == 23) { include ('edit_priv_agv.inc') ; } // = 26 zum Überprüfen // = 2 wenn keine Änderungen gewünscht if ($go == 24) { include ('store_priv_agv.inc') ; } // = 22 if ($go == 28) { include ('delete_priv_agv.inc') ; } // = 22 if ($go == 25) { include ('create_priv_agv.inc') ; } // = 26 zum Überprüfen // = 2 wenn keine Änderungen gewünscht if ($go == 26) { include ('check_priv_agv.inc') ; } // = 24 zum Abspeichern // = 2 wenn keine Änderungen gewünscht if ($go == 27) { include ('copy_opac_job.inc') ; // kopiert einen OPAC-Aerosoltyp include ('menu.inc') ; } // "subs/select_from_mopsmap_basic[mopsmap_basic_tmp]" // "subs/select_from_mopsmap_agv" // "find_lib_agv.inc": liefert libagv_name[:] für die Pulldownmenüs // "find_priv_agv.inc": liefert privagv_name[:] für die Pulldownmenüs // "subs/find_agv_from_archives": liefert lib_agv[:] und priv_agv[:] // = 22 Option: private AGVs updaten // = 32 Option: library AGVs anzeigen // = 3 wenn Fehler // = 3 wenn OnChange // = 6 wenn keine Fehler // = 8 Original-Job wird gelöscht // = 10 an Anfang zur Jobauswahl if ($go == 32) { include ('show_lib_agv.inc') ; } // zeigt alle AGVs aus Bibliothek // = 2 if ($go == 2) { include ('menu.inc') ; } // "subs/select_from_mopsmap_basic[mopsmap_basic_tmp]" // "subs/select_from_mopsmap_agv" // "find_lib_agv.inc": liefert libagv_name[:] für die Pulldownmenüs // "find_priv_agv.inc": liefert privagv_name[:] für die Pulldownmenüs // "subs/find_agv_from_archives": liefert lib_agv[:] und priv_agv[:], sonst "notdef" // beliebige Änderung von Parametern möglich // = 22 Option: private AGVs updaten // = 32 Option: library AGVs anzeigen // = 3 zum Überprüfen // = 3 wenn OnChange (lib_agv[:] -> old_lib_agv_1, etc.) // = 6 wenn keine Fehler // = 8 Original-Job wird gelöscht // = 10 an Anfang zur Jobauswahl if ($go == 3) { include ('check.inc') ; // beachte: unterschiedlich für go=3 und go=6 // "subs/change_to_indexed" // "subs/adapt_for_input_changes": Bestimmung der geänderten Parameter, i.e. // $lagv_changed[:], $pagv_changed[:], $comp_changed[:], $shape_changed[:] // "subs/select_from_mopsmap_agv_lib": wenn neue lib-AGV verwendet, dann diese Mikrophysik // "subs/select_from_mopsmap_agv_priv": wenn neue priv AGV verwendet, dann diese Mikrophysik // Fehler und Inkonsistenzen aufspüren // "subs/update_mopsmap_agv" // "subs/update_mopsmap_basic[mopsmap_basic_tmp]" // "subs/find_agv_from_archives": liefert lib_agv[:] und priv_agv[:], sonst "notdef" include ('menu.inc') ; } // "subs/select_from_mopsmap_basic[mopsmap_basic_tmp]" // "subs/select_from_mopsmap_agv" // "find_lib_agv.inc": liefert libagv_name[:] für die Pulldownmenüs // "find_priv_agv.inc": liefert privagv_name[:] für die Pulldownmenüs // "subs/find_agv_from_archives": liefert lib_agv[:] und priv_agv[:] // = 22 Option: private AGVs updaten // = 32 Option: library AGVs anzeigen // = 3 zum Überprüfen // = 3 wenn OnChange // = 6 wenn keine Fehler // = 8 Original-Job wird gelöscht // = 10 an Anfang zur Jobauswahl if ($go == 6) { include ('check.inc') ; // beachte: unterschiedlich für go=3 und go=6 // "subs/select_from_mopsmap_basic[mopsmap_basic_tmp]" // "subs/select_from_mopsmap_agv" // "subs/find_agv_from_archives" // "subs/change_basic_to_unindexed" // "subs/change_agv_to_unindexed" include ('freeze.inc') ; } // aktuelle Werte werden angezeigt // = 4 wenn so gerechnet werden soll, zum Output spezifizieren // = 2 wenn doch nochmal editiert werden soll/muss if ($go == 4) { include ('output.inc') ; } // Spezifikation der Output-Parameter // = 51 Check, ob Jobname OK // = 2 wenn doch nochmal editiert werden soll if ($go == 51) { include ('check_job.inc') ; } // prüft Gültigkeit des Jobnamens // = 5 zulässiger Jobname // = 4 Jobname unzulässig oder Änderungswunsch if ($go == 5) { include ('wait.inc') ; } // "subs/select_from_mopsmap_basic[mopsmap_basic_tmp]" // "subs/select_from_mopsmap_agv" // "subs/update_mopsmap_basic"; wenn update_job="y" // "subs/insert_into_mopsmap_basic"; wenn update_job="n" // Erstellen des Input-Files in "/tmp" für die Rechnung // = 999 Programm-Ende // = 81 Aufräumen // = 10 an Anfang zur Jobauswahl if ($go == 8) { include ('delete.inc') ; } // = 999 Programm-Ende // = 10 an Anfang zur Jobauswahl if ($go == 81) { include ('clean_job_tmp_db.inc') ; } // = 999 Programm-Ende // = 10 an Anfang zur Jobauswahl if ($go == 999) { include ('ende.inc') ; } ?> </body> </html>

Here you find the average performance (time & memory) of each version. A grayed out version indicates it didn't complete successfully (based on exit-code).
Note: hhvm uses a JIT which only kicks in after a few runs. Since we run scripts only once, hhvm always runs slower.

VersionSystem time (s)User time (s)Memory (MiB)
7.2.60.0100.00316.89
7.2.50.0070.00716.96
7.1.200.0030.01015.56
7.1.70.1540.01515.26
7.1.60.1590.02632.98
7.1.50.1750.01732.81
7.1.40.1570.01332.49
7.1.30.1550.02032.57
7.1.20.1300.01032.87
7.1.10.1410.00914.71
7.1.00.1470.00715.05
7.0.200.1520.01615.06
7.0.190.1550.00914.82
7.0.180.1180.01014.43
7.0.170.1390.01714.33
7.0.160.1170.01014.23
7.0.150.1380.00714.51
7.0.140.1290.01014.50
7.0.130.1120.01014.74
7.0.120.1450.01314.76
7.0.110.1500.00714.35
7.0.100.1280.00314.56
7.0.90.1540.00614.45
7.0.80.1600.01314.55
7.0.70.1500.01314.64
7.0.60.1520.00914.51
7.0.50.1540.01014.66
7.0.40.1530.01314.95
7.0.30.1160.01014.83
7.0.20.1200.01314.59
7.0.10.1550.01014.56
7.0.00.1370.01014.54
hhvm-3.15.40.0490.17885.30
5.6.300.0130.07120.82
5.6.290.0130.07220.63
5.6.280.0070.06620.75
5.6.270.0120.06320.82
5.6.260.0130.07120.94
5.6.250.0160.06120.94
5.6.240.0130.08320.75
5.6.230.0130.08420.94
5.6.220.0190.05920.95
5.6.210.0240.06820.71
5.6.200.0100.09120.93
5.6.190.0200.08120.75
5.6.180.0030.06920.71
5.6.170.0220.06621.00
5.6.160.0160.06720.84
5.6.150.0210.07220.77
5.6.140.0230.07020.93
5.6.130.0090.07320.89
5.6.120.0070.08420.72
5.6.110.0170.05920.71
5.6.100.0200.05420.77
5.6.90.0200.05920.87
5.6.80.0140.07320.38
5.6.70.0150.07220.11
5.6.60.0160.07520.26
5.6.50.0130.06420.09
5.6.40.0180.05820.12
5.6.30.0140.05920.25
5.6.20.0170.05320.09
5.6.10.0160.06120.35
5.6.00.0250.07420.14