3v4l.org

run code in 300+ PHP versions simultaneously
<?php error_reporting(-1); abstract class AbstractWorker{ public $rank; public $isBoss; public $count; public $coffeeConsumption; public $salary; public $printedPages; public function __construct($count, $rank, $isBoss) { $this->rank = $rank; $this->count = $count; $this->isBoss = $isBoss; } function CalculationOfInformation($rank, $isBoss){ if ($this->rank == 2){ $this->salary = $this->salary * 1.25 * $this->count; } elseif ($this->rank == 3){ $this->salary = $this->salary * 1.5 * $this->count; } else { $this->salary = $this->salary * $this->count; } $this->coffeeConsumption = $this->coffeeConsumption * $this->count; $this->printedPages = $this->printedPages * $this->count; if ($this->isBoss == 1){ $this->salary *= 1.5; $this->coffeeConsumption *= 2; $this->printedPages = 0; } } public function print($value){ return $value; } } class Manager extends AbstractWorker{ public $coffeeConsumption = 20; public $salary = 500; public $printedPages = 200; } class Marketer extends AbstractWorker{ public $coffeeConsumption = 15; public $salary = 400; public $printedPages = 150; } class Engineer extends AbstractWorker{ public $coffeeConsumption = 5; public $salary = 200; public $printedPages = 50; } class Analyst extends AbstractWorker{ public $coffeeConsumption = 50; public $salary = 800; public $printedPages = 5; } class Department { public $name; public $workers = array(); public function __construct($name) { $this->name = $name; } public function addWorkers(AbstractWorker $worker){ $worker->CalculationOfInformation($worker->rank, $worker->isBoss); $this->workers[] = $worker; } public function getInformation(){ $information = array( "name" => 0, "count" => 0, "coffee" => 0, "salary" => 0, "pages" => 0, "salaryDivedePagas" => 0 ); foreach ($this->workers as $worker) { $information["count"] += $worker->print($worker->count); $information["coffee"] += $worker->print($worker->coffeeConsumption); $information["salary"] += $worker->print($worker->salary); $information["pages"] += $worker->print($worker->printedPages); } $information["name"] = $this->name; $information["salaryDividePages"] = $information["salary"] / $information["pages"]; return $information; } } class Company { public $departments = array(); public $col = array(30, 8, 30, 8, 8, 15); public function addDepartment(Department $name){ $this->departments[] = $name; } public function padRight($string, $length){ echo $string; echo str_repeat(" ", $length - mb_strlen($string)); } public function printString($array, $col){ echo $this->padRight($array[0], $this->col[0]) . $this->padRight($array[1], $this->col[1]) . $this->padRight($array[2], $this->col[2]). $this->padRight($array[3], $this->col[3]) . $this->padRight($array[4], $this->col[4]) . $this->padRight($array[5], $this->col[5]); echo "\n\n"; } public function printColumnName(){ $columnName = array("Департамент", "сотр.", "тург", "кофе", "cтр.", "тугр./стр."); // echo $this->padRight("Департамент", $this->col[0]) . // $this->padRight("сотр.", $this->col[1]) . // $this->padRight("тург.", $this->col[2]). // $this->padRight("кофе", $this->col[3]) . // $this->padRight("стр.", $this->col[4]) . // $this->padRight("тугр./стр.", $this->col[5]); // echo "\n\n"; printString($columnName, $this->col); } public function printDepartment(){ foreach ($this->departments as $department) { $information = $department->getInformation(); echo $this->padRight($information["name"], $this->col[0]). $this->padRight($information["count"], $this->col[1]). $this->padRight($information["coffee"], $this->col[2]). $this->padRight($information["salary"], $this->col[3]). $this->padRight($information["pages"], $this->col[4]). $this->padRight($information["salaryDividePages"], $this->col[5]); echo "\n"; } echo "\n"; } public function printTotalValue(){ $totalCoffee = 0; $totalWorkers = 0; $totalSalary = 0; $totalPages = 0; $totalSalaryDivedePages = 0; $totalValue = array(); foreach ($this->departments as $department) { $totalValues = $department->getInformation(); $totalCoffee += $totalValues["coffee"]; $totalWorkers += $totalValues["count"]; $totalSalary += $totalValues["salary"]; $totalPages += $totalValues["pages"]; $totalSalaryDivedePages += $totalValues["salaryDividePages"]; } echo $this->padRight("Всего", $this->col[0]). $this->padRight($totalWorkers, $this->col[1]). $this->padRight($totalSalary, $this->col[2]). $this->padRight($totalCoffee, $this->col[3]). $this->padRight($totalPages, $this->col[4]). $this->padRight($totalSalaryDivedePages, $this->col[5]); echo "\n"; } public function printAverageValue(){ $averageCoffee = 0; $averageWorkers = 0; $averageSalary = 0; $averagePages = 0; $averageSalaryDivedePages = 0; $averageValue = array(); foreach ($this->departments as $department) { $averageValues = $department->getInformation(); $averageCoffee += $averageValues["coffee"]; $averageWorkers += $averageValues["count"]; $averageSalary += $averageValues["salary"]; $averagePages += $averageValues["pages"]; $averageSalaryDivedePages += $averageValues["salaryDividePages"]; } $averageCoffee /= count($this->departments); $averageSalary /= count($this->departments); $averageWorkers /= count($this->departments); $averagePages /= count($this->departments); $averageSalaryDivedePages /= count($this->departments); echo $this->padRight("Среднее", $this->col[0]). $this->padRight($averageWorkers, $this->col[1]). $this->padRight($averageSalary, $this->col[2]). $this->padRight($averageCoffee, $this->col[3]). $this->padRight($averagePages, $this->col[4]). $this->padRight($averageSalaryDivedePages, $this->col[5]); } } $vektor = new Company; $procurementDepartment = new Department("Закупок"); $procurementDepartment->addWorkers(new Manager(9, 1, 0)); $procurementDepartment->addWorkers(new Manager(3, 2, 0)); $procurementDepartment->addWorkers(new Manager(2, 3, 0)); $procurementDepartment->addWorkers(new Marketer(2, 1, 0)); $procurementDepartment->addWorkers(new Manager(1, 2, 1)); $sellingDepartment = new Department("Продаж"); $sellingDepartment->addWorkers(new Manager(12, 1, 0)); $sellingDepartment->addWorkers(new Marketer(6, 1, 0)); $sellingDepartment->addWorkers(new Analyst(3, 1, 0)); $sellingDepartment->addWorkers(new Analyst(2, 2, 0)); $sellingDepartment->addWorkers(new Marketer(1, 2, 1)); $advertisingDepartment = new Department("Рекламы"); $advertisingDepartment->addWorkers(new Marketer(15, 1, 0)); $advertisingDepartment->addWorkers(new Marketer(10, 2, 0)); $advertisingDepartment->addWorkers(new Manager(8, 1, 0)); $advertisingDepartment->addWorkers(new Engineer(2, 1, 0)); $advertisingDepartment->addWorkers(new Marketer(1, 3, 1)); $logisticsDepartment = new Department("Логистики"); $logisticsDepartment->addWorkers(new Manager(13, 1, 0)); $logisticsDepartment->addWorkers(new Manager(5, 2, 0)); $logisticsDepartment->addWorkers(new Engineer(5, 1, 0)); $logisticsDepartment->addWorkers(new Manager(1, 1, 1)); $vektor->addDepartment($procurementDepartment); $vektor->addDepartment($sellingDepartment); $vektor->addDepartment($advertisingDepartment); $vektor->addDepartment($logisticsDepartment); $vektor->printColumnName(); $vektor->printDepartment(); $vektor->printTotalValue(); $vektor->printAverageValue();

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).

VersionSystem time (s)User time (s)Memory (MiB)
8.3.70.0070.01117.00
8.3.60.0060.00917.00
8.3.50.0170.00316.72
8.3.40.0120.00318.86
8.3.30.0120.00619.12
8.3.20.0040.00420.43
8.3.10.0000.00823.48
8.3.00.0080.00023.58
8.2.190.0190.00416.75
8.2.180.0090.00916.88
8.2.170.0080.00822.96
8.2.160.0040.01120.66
8.2.150.0040.00425.66
8.2.140.0110.00724.66
8.2.130.0040.00420.54
8.2.120.0000.00726.35
8.2.110.0060.00321.08
8.2.100.0090.00318.16
8.2.90.0040.00420.77
8.2.80.0060.00320.62
8.2.70.0060.00317.88
8.2.60.0050.00318.05
8.2.50.0040.00418.34
8.2.40.0050.00320.59
8.2.30.0040.00419.49
8.2.20.0040.00418.25
8.2.10.0000.00818.17
8.2.00.0070.00018.17
8.1.280.0090.00925.92
8.1.270.0040.00422.23
8.1.260.0050.00326.35
8.1.250.0080.00028.09
8.1.240.0040.00422.32
8.1.230.0120.00021.03
8.1.220.0090.00017.89
8.1.210.0040.00418.97
8.1.200.0030.00617.60
8.1.190.0080.00017.66
8.1.180.0030.00618.10
8.1.170.0050.00318.65
8.1.160.0070.00018.99
8.1.150.0000.00819.06
8.1.140.0050.00319.67
8.1.130.0050.00218.98
8.1.120.0000.00817.64
8.1.110.0040.00417.66
8.1.100.0080.00017.59
8.1.90.0080.00317.64
8.1.80.0040.00417.52
8.1.70.0040.00417.57
8.1.60.0080.00417.64
8.1.50.0030.00617.75
8.1.40.0030.00517.69
8.1.30.0040.00717.88
8.1.20.0040.00417.83
8.1.10.0000.00817.76
8.1.00.0050.00317.68
8.0.300.0040.00421.94
8.0.290.0040.00417.13
8.0.280.0040.00418.54
8.0.270.0040.00417.33
8.0.260.0030.00317.11
8.0.250.0000.00717.24
8.0.240.0000.00817.17
8.0.230.0070.00017.19
8.0.220.0000.00817.10
8.0.210.0000.00716.97
8.0.200.0000.00717.04
8.0.190.0040.00417.18
8.0.180.0040.00417.05
8.0.170.0080.00017.09
8.0.160.0000.00716.98
8.0.150.0040.00416.95
8.0.140.0080.00017.01
8.0.130.0000.00613.47
8.0.120.0040.00417.06
8.0.110.0000.01117.09
8.0.100.0000.00817.07
8.0.90.0000.00817.00
8.0.80.0040.01217.18
8.0.70.0040.00417.09
8.0.60.0060.00317.02
8.0.50.0070.00016.98
8.0.30.0090.00917.27
8.0.20.0100.01117.45
8.0.10.0080.00017.24
8.0.00.0100.00917.15
7.4.330.0000.00715.55
7.4.320.0030.00316.84
7.4.300.0030.00316.78
7.4.290.0000.00716.78
7.4.280.0040.00416.66
7.4.270.0040.00416.70
7.4.260.0070.00416.61
7.4.250.0000.00816.71
7.4.240.0040.00416.79
7.4.230.0040.00416.80
7.4.220.0200.00316.52
7.4.210.0060.01116.75
7.4.200.0040.00416.69
7.4.160.0100.00616.68
7.4.150.0090.00917.40
7.4.140.0120.00817.86
7.4.130.0060.01216.66
7.4.120.0090.00916.67
7.4.110.0150.00316.76
7.4.100.0120.00616.76
7.4.90.0070.01116.66
7.4.80.0120.00619.39
7.4.70.0100.00716.60
7.4.60.0090.00616.66
7.4.50.0070.00716.84
7.4.40.0070.01016.83
7.4.30.0110.00716.74
7.4.00.0030.00514.99
7.3.330.0030.00313.60
7.3.320.0060.00013.46
7.3.310.0070.00016.45
7.3.300.0030.00616.51
7.3.290.0000.00716.48
7.3.280.0090.00916.60
7.3.270.0140.00317.40
7.3.260.0100.00816.73
7.3.250.0090.01016.62
7.3.240.0080.00916.68
7.3.230.0130.00416.64
7.3.210.0120.00616.63
7.3.200.0070.01016.76
7.3.190.0090.00916.48
7.3.180.0080.00816.61
7.3.170.0080.00816.53
7.3.160.0120.00616.57
7.2.330.0060.01216.72
7.2.320.0090.01516.96
7.2.310.0110.00816.92
7.2.300.0070.01016.75
7.2.290.0090.00916.79
7.2.60.0040.00816.96
7.1.200.0040.00715.93
7.1.110.0000.01318.28
7.1.100.0030.01018.17
7.1.90.0000.01318.09
7.1.80.0110.00718.05
7.1.70.0090.00517.01
7.1.60.0200.00735.06
7.1.50.0220.00734.72
7.1.40.0130.01334.41
7.1.30.0200.01034.47
7.1.20.0150.01134.57
7.1.10.0090.00616.67
7.1.00.0040.01116.54
7.0.250.0060.00617.62
7.0.240.0090.00617.73
7.0.230.0030.01517.58
7.0.220.0040.01417.40
7.0.210.0060.00716.61
7.0.200.0040.00916.53
7.0.190.0060.00616.89
7.0.180.0030.01016.33
7.0.170.0060.00616.21
7.0.160.0060.01216.35
7.0.150.0030.01216.20
7.0.140.0060.00916.27
7.0.130.0030.00916.50
7.0.120.0040.00816.54
7.0.110.0060.00816.41
7.0.100.0090.00316.23
7.0.90.0050.00816.38
7.0.80.0060.00916.40
7.0.70.0030.01016.24
7.0.60.0030.00916.29
7.0.50.0030.01316.24
7.0.40.0110.00316.61
7.0.30.0080.00516.36
7.0.20.0000.01316.34
7.0.10.0010.01216.42
7.0.00.0000.01316.27

preferences:
18.42 ms | 401 KiB | 5 Q