3v4l.org

run code in 300+ PHP versions simultaneously
<?php error_reporting(-1); header("Content-Type: text/plain; charset=utf-8"); mb_internal_encoding('utf-8'); abstract class Employee { public $boss; public $rank; public function __construct($boss, $rank) { $this->boss = $boss; $this->rank = $rank; } function getSalary() { if ($this->rank == 1) { $rankFactor = 1; } elseif ($this->rank == 2) { $rankFactor = 1.25; } elseif ($this->rank == 3) { $rankFactor = 1.5; } else return "Ошибка ранга!"; if ($this->boss == 0) { $bossFactor = 1; } elseif ($this->boss == 1) { $bossFactor = 2; } else return "Ошибка иерархии!"; return $this->rate * $rankFactor * $bossFactor; } function getReports() { if ($this->boss == 0) { $bossFactor = 1; } elseif ($this->boss == 1) { $bossFactor = 0; } else return "Ошибка иерархии!"; return $this->reports * $bossFactor; } function getCoffee() { if ($this->boss == 0) { $bossFactor = 1; } elseif ($this->boss == 1) { $bossFactor = 2; } else return "Ошибка иерархии!"; return $this->coffee * $bossFactor; } } class Manager extends Employee { public $rate = 500; public $coffee = 20; public $reports = 200; } class Marketer extends Employee { public $rate = 400; public $coffee = 15; public $reports = 150; } class Engineer extends Employee { public $rate = 200; public $coffee = 5; public $reports = 50; } class Analyst extends Employee { public $rate = 800; public $coffee = 50; public $reports = 5; } class Department { public $departmentName; public $departamentEmployees; public function __construct($departmentName) { $this->departmentName = $departmentName; } public function getTotalEmployees() { return count($this->departamentEmployees); } public function getTotalSalary() { $totalSalary = 0; foreach ($this->departamentEmployees as $employee) { $totalSalary += $employee->getSalary(); } return $totalSalary; } public function getTotalCoffee() { $totalCoffee = 0; foreach ($this->departamentEmployees as $employee) { $totalCoffee += $employee->getCoffee(); } return $totalCoffee; } public function getTotalReports() { $totalReports = 0; foreach ($this->departamentEmployees as $employee) { $totalReports += $employee->getReports(); } return $totalReports; } public function getAverageMoneyPerPage() { return round($this->getTotalSalary() / $this->getTotalReports()); } } $purchasing = new Department("Закупок"); $sales = new Department("Продаж"); $advertising = new Department("Рекламы"); $logistics = new Department("Логистики"); $purchasing->departamentEmployees = [ $employee = new Manager(0, 1), $employee = new Manager(0, 1), $employee = new Manager(0, 1), $employee = new Manager(0, 1), $employee = new Manager(0, 1), $employee = new Manager(0, 1), $employee = new Manager(0, 1), $employee = new Manager(0, 1), $employee = new Manager(0, 1), $employee = new Manager(0, 2), $employee = new Manager(0, 2), $employee = new Manager(0, 2), $employee = new Manager(0, 3), $employee = new Manager(0, 3), $employee = new Marketer(0, 1), $employee = new Marketer(0, 1), $employee = new Manager(1, 2) ]; $sales->departamentEmployees = [ $employee = new Manager(0, 1), $employee = new Manager(0, 1), $employee = new Manager(0, 1), $employee = new Manager(0, 1), $employee = new Manager(0, 1), $employee = new Manager(0, 1), $employee = new Manager(0, 1), $employee = new Manager(0, 1), $employee = new Manager(0, 1), $employee = new Manager(0, 1), $employee = new Manager(0, 1), $employee = new Manager(0, 1), $employee = new Marketer(0, 1), $employee = new Marketer(0, 1), $employee = new Marketer(0, 1), $employee = new Marketer(0, 1), $employee = new Marketer(0, 1), $employee = new Marketer(0, 1), $employee = new Analyst(0, 1), $employee = new Analyst(0, 1), $employee = new Analyst(0, 1), $employee = new Analyst(0, 2), $employee = new Analyst(0, 2), $employee = new Marketer(1, 2) ]; $advertising->departamentEmployees = [ $employee = new Marketer(0, 1), $employee = new Marketer(0, 1), $employee = new Marketer(0, 1), $employee = new Marketer(0, 1), $employee = new Marketer(0, 1), $employee = new Marketer(0, 1), $employee = new Marketer(0, 1), $employee = new Marketer(0, 1), $employee = new Marketer(0, 1), $employee = new Marketer(0, 1), $employee = new Marketer(0, 1), $employee = new Marketer(0, 1), $employee = new Marketer(0, 1), $employee = new Marketer(0, 1), $employee = new Marketer(0, 1), $employee = new Marketer(0, 2), $employee = new Marketer(0, 2), $employee = new Marketer(0, 2), $employee = new Marketer(0, 2), $employee = new Marketer(0, 2), $employee = new Marketer(0, 2), $employee = new Marketer(0, 2), $employee = new Marketer(0, 2), $employee = new Marketer(0, 2), $employee = new Marketer(0, 2), $employee = new Manager(0, 1), $employee = new Manager(0, 1), $employee = new Manager(0, 1), $employee = new Manager(0, 1), $employee = new Manager(0, 1), $employee = new Manager(0, 1), $employee = new Manager(0, 1), $employee = new Manager(0, 1), $employee = new Engineer(0, 1), $employee = new Engineer(0, 1), $employee = new Marketer(1, 3) ]; $logistics->departamentEmployees = [ $employee = new Manager(0, 1), $employee = new Manager(0, 1), $employee = new Manager(0, 1), $employee = new Manager(0, 1), $employee = new Manager(0, 1), $employee = new Manager(0, 1), $employee = new Manager(0, 1), $employee = new Manager(0, 1), $employee = new Manager(0, 1), $employee = new Manager(0, 1), $employee = new Manager(0, 1), $employee = new Manager(0, 1), $employee = new Manager(0, 1), $employee = new Manager(0, 2), $employee = new Manager(0, 2), $employee = new Manager(0, 2), $employee = new Manager(0, 2), $employee = new Manager(0, 2), $employee = new Engineer(0, 1), $employee = new Engineer(0, 1), $employee = new Engineer(0, 1), $employee = new Engineer(0, 1), $employee = new Engineer(0, 1), $employee = new Manager(1, 1) ]; $departamentsList = [$purchasing, $sales, $advertising, $logistics]; function padLeft($string, $length) { $str = ""; if (mb_strlen($string) < $length) { $str = str_repeat(" ", $length - mb_strlen($string)) . $string; } return $str; } function padRight($string, $length) { $str = ""; if (mb_strlen($string) < $length) { return $string . str_repeat(" ", $length - mb_strlen($string)); } return $str; } $col1 = 30; $col2 = 8; $col3 = 8; $col4 = 8; $col5 = 8; $col6 = 12; $colLength = $col1 + $col2 + $col3 + $col4 + $col5 + $col6; echo str_repeat("-", $colLength + 1) . "\n"; echo padRight("Департамент", $col1) . padLeft("сотр.", $col2) . padLeft("тугр.", $col3) . padLeft("кофе", $col4) . padLeft("стр.", $col5) . padLeft("тугр./стр.", $col6) . "\n"; echo str_repeat("-", $colLength + 1) . "\n"; foreach ($departamentsList as $department) { echo padRight($department->departmentName, $col1) . padLeft($department->getTotalEmployees(), $col2) . padLeft($department->getTotalSalary(), $col3) . padLeft($department->getTotalCoffee(), $col4) . padLeft($department->getTotalReports(), $col5) . padLeft($department->getAverageMoneyPerPage(), $col6) . "\n"; } echo "\n"; $allEmployees = 0; $allSalary = 0; $allCoffee = 0; $allReports = 0; $allAverageMoneyPerPage = 0; foreach ($departamentsList as $department) { $allEmployees += $department->getTotalEmployees(); $allSalary += $department->getTotalSalary(); $allCoffee += $department->getTotalCoffee(); $allReports += $department->getTotalReports(); $allAverageMoneyPerPage += $department->getAverageMoneyPerPage(); } echo padRight("Среднее", $col1) . padLeft(round($allEmployees / count($departamentsList)), $col2) . padLeft(round($allSalary / count($departamentsList)), $col3) . padLeft(round($allCoffee / count($departamentsList)), $col4) . padLeft(round($allReports / count($departamentsList)), $col5) . padLeft(round($allAverageMoneyPerPage / count($departamentsList)), $col6) . "\n"; echo padRight("Всего", $col1) . padLeft(round($allEmployees), $col2) . padLeft(round($allSalary), $col3) . padLeft(round($allCoffee), $col4) . padLeft(round($allReports), $col5) . padLeft(round($allAverageMoneyPerPage), $col6) . "\n";

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.60.0150.00018.43
8.3.50.0100.00618.31
8.3.40.0110.01119.07
8.3.30.0120.00319.14
8.3.20.0000.00821.24
8.3.10.0080.00020.46
8.3.00.0080.00020.79
8.2.180.0070.00718.05
8.2.170.0070.01122.96
8.2.160.0060.00920.68
8.2.150.0070.00324.18
8.2.140.0080.00024.66
8.2.130.0040.00426.16
8.2.120.0090.00021.03
8.2.110.0030.00721.13
8.2.100.0130.00018.21
8.2.90.0000.00818.28
8.2.80.0030.00618.28
8.2.70.0030.00618.26
8.2.60.0060.00318.28
8.2.50.0030.00618.10
8.2.40.0030.00619.84
8.2.30.0090.00019.69
8.2.20.0030.00618.47
8.2.10.0080.00019.26
8.2.00.0030.00519.65
8.1.280.0120.00325.92
8.1.270.0080.00022.59
8.1.260.0030.00526.35
8.1.250.0050.00328.09
8.1.240.0090.00022.50
8.1.230.0090.00322.71
8.1.220.0050.00318.16
8.1.210.0030.00619.09
8.1.200.0030.00617.73
8.1.190.0030.00617.73
8.1.180.0040.00418.10
8.1.170.0080.00019.05
8.1.160.0000.00820.57
8.1.150.0020.00519.10
8.1.140.0080.00017.62
8.1.130.0080.00020.44
8.1.120.0040.00417.75
8.1.110.0090.00017.78
8.1.100.0060.00317.71
8.1.90.0080.00417.75
8.1.80.0000.01117.75
8.1.70.0070.00017.61
8.1.60.0050.00317.85
8.1.50.0120.00017.91
8.1.40.0060.00317.87
8.1.30.0040.00417.98
8.1.20.0050.00517.83
8.1.10.0000.00817.91
8.1.00.0030.00717.75
8.0.300.0030.00621.50
8.0.290.0060.00317.00
8.0.280.0080.00018.80
8.0.270.0040.00417.10
8.0.260.0030.00320.43
8.0.250.0000.00817.34
8.0.240.0000.00817.30
8.0.230.0040.00417.35
8.0.220.0030.00617.14
8.0.210.0020.00517.25
8.0.200.0060.00317.19
8.0.190.0040.00417.33
8.0.180.0030.00617.23
8.0.170.0060.00317.28
8.0.160.0050.00317.21
8.0.150.0040.00417.26
8.0.140.0000.00717.29
8.0.130.0000.00713.76
8.0.120.0080.00017.22
8.0.110.0060.00317.21
8.0.100.0000.00817.13
8.0.90.0030.00617.31
8.0.80.0170.00217.23
8.0.70.0000.00817.25
8.0.60.0040.00417.23
8.0.50.0000.00817.25
8.0.30.0120.01217.27
8.0.20.0100.01017.75
8.0.10.0040.00417.38
8.0.00.0120.00617.29
7.4.330.0000.00615.55
7.4.320.0070.00016.82
7.4.300.0070.00016.94
7.4.290.0040.00416.98
7.4.280.0080.00316.74
7.4.270.0070.00016.94
7.4.260.0030.00313.64
7.4.250.0000.00716.66
7.4.240.0040.00416.86
7.4.230.0050.00316.91
7.4.220.0040.00416.84
7.4.210.0030.01416.85
7.4.200.0080.00016.93
7.4.140.0140.01017.86
7.4.130.0090.01216.93
7.4.120.0130.01316.73
7.4.110.0110.00716.73
7.4.100.0120.00616.79
7.4.90.0090.00916.94
7.4.80.0110.01219.39
7.4.70.0110.00716.87
7.4.60.0150.00616.72
7.4.50.0060.00916.71
7.4.40.0090.00916.72
7.4.00.0090.00615.29
7.3.330.0070.00016.52
7.3.320.0000.00613.53
7.3.310.0040.00416.68
7.3.300.0050.00316.68
7.3.290.0080.00916.65
7.3.280.0120.01216.69
7.3.260.0110.00717.07
7.3.230.0070.01116.89
7.3.210.0130.00616.86
7.3.200.0130.00616.76
7.3.190.0060.01217.05
7.3.180.0110.00616.59
7.3.170.0030.02216.70
7.3.160.0130.00316.67
7.3.120.0140.00615.15
7.3.110.0170.00414.81
7.3.100.0030.01314.89
7.3.90.0050.01315.28
7.3.80.0110.00515.00
7.3.70.0090.01315.11
7.3.60.0110.00915.10
7.3.50.0150.00915.05
7.3.40.0100.01514.79
7.3.30.0130.00814.89
7.3.20.0040.01415.05
7.3.10.0070.01515.18
7.3.00.0100.00614.95
7.2.330.0130.00717.11
7.2.320.0040.01517.05
7.2.310.0090.01016.95
7.2.300.0050.01316.97
7.2.290.0030.01516.91
7.2.240.0100.01414.97
7.2.230.0090.00915.52
7.2.220.0170.00315.27
7.2.210.0110.00915.45
7.2.200.0060.01215.22
7.2.190.0140.00815.15
7.2.180.0130.01415.41
7.2.170.0110.01815.33
7.2.160.0120.01215.20
7.2.150.0100.01015.22
7.2.140.0180.00715.02
7.2.130.0170.00815.19
7.2.120.0130.00615.09
7.2.110.0080.01615.39
7.2.100.0140.00715.23
7.2.90.0160.00615.55
7.2.80.0100.01315.15
7.2.70.0060.01915.40
7.2.60.0130.00715.37
7.2.50.0030.01715.12
7.2.40.0110.01115.36
7.2.30.0100.01515.24
7.2.20.0160.00315.44
7.2.10.0450.00315.34
7.2.00.0070.01415.42
7.1.330.0120.00414.34
7.1.320.0060.01114.13
7.1.310.0130.00814.13
7.1.300.0140.00913.97
7.1.290.0170.00614.25
7.1.280.0110.01214.20
7.1.270.0180.00414.25
7.1.260.0090.00914.14
7.1.250.0040.01714.15

preferences:
23.52 ms | 400 KiB | 5 Q