3v4l.org

run code in 300+ PHP versions simultaneously
<?php class KlassifizierterText { private $text; private $klasse; private $lexikonGroesse; function __construct($paramText = null, $paramKlasse = null) { if(!empty($paramText)) $this->setzeText($paramText); if(!empty($paramKlasse)) $this->setzeKlasse($paramKlasse); } public function setzeText($paramText) { $this->text = $paramText; $this->lexikonGroesse = $this->berechneLexikonGroesse(); } public function setzeKlasse($paramKlasse) { $this->klasse = $paramKlasse; } public function gibText() { return $this->text; } public function gibWoerterInArray() { return explode(" ", $this->text); } public function gibKlasse() { return $this->klasse; } public function gibLexikonGroesse() { return $this->lexikonGroesse; } private function berechneLexikonGroesse(){ $woerter = explode(" ", $this->text); return array_count_values($woerter); } } class BayesKlassifikation { private $kTexte; private $uText; private $wahrscheinlichkeitUText; function __construct($paramKTexte = null, $paramUText = null) { if(!empty($paramKTexte)) $this->setzeKTexte($paramKTexte); if(!empty($paramUText)) $this->setzeUText($paramUText); } public function setzeKTexte($paramKTexte) { $this->kTexte = $paramKTexte; } public function setzeUText($paramUText) { $this->uText = $paramUText; } public function gibKTexte() { return $this->kTexte; } public function gibUText() { return $this->uText; } public function gibWahrscheinlichsteKlasseVonUText(){ if(empty($this->wahrscheinlichkeitUText)) $this->wahrscheinlichkeitUText = $this->berechneWahrscheinlichsteKlasseVonText($kTexte, array("chinesischer Text", "japanischer Text"), $uText); return $this->wahrscheinlichkeitUText; } public static function berechneKlassenWahrscheinlichkeit($kTexte, $klasse) { $klassen = array(); foreach($kTexte as $kText){ if($kText->gibKlasse()) array_push($klassen, $kText->gibKlasse()); } $klassenCounts = array_count_values($klassen); return ($klassenCounts[$klasse]/count($klassen)); } public static function berechneGesamtLexikonGroesse($kTexte) { $gesLexikon = array(); foreach($kTexte as $kText){ foreach($kText->gibLexikonGroesse() as $key => $value){ if(!array_key_exists($key, $gesLexikon)) $gesLexikon[$key] = 0; $gesLexikon[$key] += $value; } } return count($gesLexikon); } public static function berechneKlassenGroesse($kTexte, $klasse) { $klassenGroesse = 0; foreach($kTexte as $kText){ if($kText->gibKlasse() == $klasse){ $klassenGroesse += array_sum($kText->gibLexikonGroesse()); } } return $klassenGroesse; } public static function berechneWortWahrscheinlichkeitInKlasse($kTexte, $klasse, $wort) { $klassenLexikon = array(); foreach($kTexte as $kText){ if($kText->gibKlasse() == $klasse){ foreach($kText->gibLexikonGroesse() as $key => $value){ if(!array_key_exists($key, $klassenLexikon)) $klassenLexikon[$key] = 0; $klassenLexikon[$key] += $value; } } } if(array_key_exists($wort, $klassenLexikon)) return $klassenLexikon[$wort]; else return 0; } public static function berechneTextWahrscheinlichkeitInKlasse($kTexte, $klasse, $kText) { $woerterArray = $kText->gibWoerterInArray(); $wortWahrscheinlichkeit = 1; for($i = 0; $i < count($woerterArray); $i++){ $tmpWortWahrscheinlichkeit = ($this->berechneWortWahrscheinlichkeitInKlasse($kTexte, $klasse, $woerterArray[$i]) + 1)/ ($this->berechneKlassenGroesse($kTexte, $klasse) + $this->berechneGesamtLexikonGroesse($kTexte)); $wortWahrscheinlichkeit *= $tmpWortWahrscheinlichkeit; } return $this->berechneKlassenWahrscheinlichkeit($kTexte, $klasse) * $wortWahrscheinlichkeit; } public static function berechneWahrscheinlichsteKlasseVonText($kTexte, $klassen, $uText) { $wahrscheinlichkeitenKlassen = array(); foreach($klassen as $klasse){ $tmpWahrscheinlichkeit = $this->berechneTextWahrscheinlichkeitInKlasse($kTexte, $klasse, $uText); $wahrscheinlichkeitenKlassen[$klasse] = $tmpWahrscheinlichkeit; } $max = array_keys($wahrscheinlichkeitenKlassen, max($wahrscheinlichkeitenKlassen)); return $max[0]; } } // Start - init: $kText1 = new KlassifizierterText("China Peking China", "chinesischer Text"); $kText2 = new KlassifizierterText("China China Schanghai", "chinesischer Text"); $kText3 = new KlassifizierterText("China Honkong", "chinesischer Text"); $kText4 = new KlassifizierterText("Tokio Japan China", "japanischer Text"); $kTexte = array($kText1, $kText2, $kText3, $kText4); $uText = new KlassifizierterText("China China China Tokio Japan"); $bayesKlassifikation = new BayesKlassifikation(); $bayesKlassifikation->setzeKTexte($kTexte); $bayesKlassifikation->setzeUText($uText); $wahrscheinlichsteKlasse = $bayesKlassifikation->gibWahrscheinlichsteKlasseVonUText(); //echo $wahrscheinlichesteKlasse;

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.40.0080.00818.79
8.3.30.0060.00918.73
8.3.20.0040.01120.36
8.3.10.0050.00320.59
8.3.00.0080.00020.57
8.2.170.0060.00922.96
8.2.160.0070.01422.18
8.2.150.0070.00324.18
8.2.140.0040.00424.66
8.2.130.0040.01121.00
8.2.120.0000.00826.35
8.2.110.0060.00319.52
8.2.100.0090.00317.91
8.2.90.0060.00319.83
8.2.80.0090.00018.22
8.2.70.0080.00017.93
8.2.60.0040.00418.18
8.2.50.0030.00518.10
8.2.40.0060.00320.55
8.2.30.0020.00519.41
8.2.20.0040.00417.91
8.2.10.0040.00418.09
8.2.00.0040.00418.24
8.1.270.0060.00323.96
8.1.260.0050.00328.09
8.1.250.0030.00528.09
8.1.240.0000.00922.38
8.1.230.0060.00621.04
8.1.220.0000.00817.91
8.1.210.0030.00618.77
8.1.200.0000.00817.60
8.1.190.0090.00017.48
8.1.180.0040.00418.10
8.1.170.0000.00918.56
8.1.160.0050.00222.11
8.1.150.0030.00618.90
8.1.140.0000.00919.69
8.1.130.0040.00417.91
8.1.120.0070.00017.60
8.1.110.0040.00417.47
8.1.100.0000.00817.49
8.1.90.0040.00417.61
8.1.80.0070.00017.52
8.1.70.0050.00517.55
8.1.60.0050.00317.66
8.1.50.0030.00617.62
8.1.40.0060.00317.61
8.1.30.0050.00317.77
8.1.20.0080.00017.62
8.1.10.0040.00417.66
8.1.00.0040.00417.69
8.0.300.0040.00420.00
8.0.290.0000.00817.00
8.0.280.0030.00518.59
8.0.270.0050.00317.38
8.0.260.0030.00317.36
8.0.250.0000.00717.13
8.0.240.0000.00717.00
8.0.230.0000.00717.01
8.0.220.0000.00717.02
8.0.210.0040.00417.04
8.0.200.0000.00617.13
8.0.190.0080.00417.03
8.0.180.0030.00517.09
8.0.170.0060.00316.98
8.0.160.0000.00717.07
8.0.150.0000.00817.04
8.0.140.0080.00016.91
8.0.130.0030.00313.52
8.0.120.0080.00017.07
8.0.110.0030.00516.90
8.0.100.0040.00417.06
8.0.90.0050.00316.95
8.0.80.0090.00617.07
8.0.70.0070.00016.89
8.0.60.0040.00416.93
8.0.50.0020.00516.95
8.0.30.0130.00717.19
8.0.20.0060.01417.40
8.0.10.0040.00416.96
8.0.00.0110.00816.87
7.4.330.0000.00516.69
7.4.320.0080.00016.73
7.4.300.0030.00316.50
7.4.290.0030.00316.64
7.4.280.0060.00316.66
7.4.270.0000.00816.59
7.4.260.0040.00416.57
7.4.250.0040.00416.70
7.4.240.0050.00216.73
7.4.230.0070.00016.57
7.4.220.0120.01216.54
7.4.210.0060.01016.64
7.4.200.0070.00016.50
7.4.160.0080.00816.48
7.4.150.0180.00717.40
7.4.140.0150.00717.86
7.4.130.0060.01216.51
7.4.120.0130.00716.59
7.4.110.0070.01016.73
7.4.100.0170.00316.59
7.4.90.0030.01516.58
7.4.80.0080.01219.39
7.4.70.0000.01816.59
7.4.60.0070.01016.60
7.4.50.0100.00716.65
7.4.40.0110.01116.75
7.4.30.0030.01816.56
7.4.00.0060.01215.31
7.3.330.0030.00413.43
7.3.320.0040.00413.30
7.3.310.0070.00016.43
7.3.300.0000.00716.43
7.3.290.0080.00016.48
7.3.280.0060.01516.46
7.3.270.0040.01817.40
7.3.260.0140.01116.39
7.3.250.0110.00916.52
7.3.240.0090.00816.57
7.3.230.0080.00816.57
7.3.210.0140.00416.70
7.3.200.0060.01216.48
7.3.190.0130.00316.79
7.3.180.0100.01216.57
7.3.170.0060.01216.54
7.3.160.0060.01016.65
7.2.330.0070.01316.84
7.2.320.0140.01116.71
7.2.310.0030.01316.81
7.2.300.0030.01316.89
7.2.290.0110.00616.66
7.2.60.0100.00617.10
7.2.00.0000.01219.68
7.1.200.0070.00315.63
7.1.100.0100.00318.16
7.1.70.0040.00417.14
7.1.60.0070.01419.27
7.1.50.0040.01416.88
7.1.00.0000.08022.48
7.0.200.0390.00614.86
7.0.100.0070.06319.94
7.0.90.0070.03719.96
7.0.80.0030.04720.13
7.0.70.0000.04019.93
7.0.60.0030.04020.06
7.0.50.0000.04320.41
7.0.40.0100.03720.17
7.0.30.0100.03719.98
7.0.20.0130.08020.06
7.0.10.0030.04020.06
7.0.00.0100.06020.05
5.6.280.0030.07021.16
5.6.250.0030.04320.70
5.6.240.0070.04020.61
5.6.230.0100.05320.74
5.6.220.0000.05320.64
5.6.210.0100.08020.74
5.6.200.0030.07021.00
5.6.190.0070.04020.98
5.6.180.0070.08021.06
5.6.170.0030.08721.03
5.6.160.0030.04020.97
5.6.150.0030.08721.20
5.6.140.0100.07321.12
5.6.130.0030.05321.02
5.6.120.0070.05321.05
5.6.110.0030.09320.98
5.6.100.0030.07321.01
5.6.90.0130.07721.01
5.6.80.0070.08020.52
5.6.70.0170.07320.34
5.6.60.0070.04020.52
5.6.50.0070.07720.50
5.6.40.0130.07020.50
5.6.30.0170.04020.44
5.6.20.0100.06720.34
5.6.10.0070.06020.48
5.6.00.0100.03320.38
5.5.380.0100.06020.40
5.5.370.0030.04020.48
5.5.360.0000.04320.40
5.5.350.0030.06320.36
5.5.340.0030.04320.95
5.5.330.0070.07720.93
5.5.320.0030.08320.76
5.5.310.0030.04020.80
5.5.300.0170.06320.86
5.5.290.0070.07320.95
5.5.280.0200.07320.81
5.5.270.0100.03720.88
5.5.260.0030.08020.88
5.5.250.0170.06720.66
5.5.240.0030.05020.29
5.5.230.0030.08320.24
5.5.220.0170.07720.28
5.5.210.0070.05020.13
5.5.200.0070.08020.14
5.5.190.0170.05320.13
5.5.180.0100.04020.21
5.5.160.0070.05720.29
5.5.150.0000.06020.25
5.5.140.0070.06320.26
5.5.130.0070.05020.19
5.5.120.0130.04020.02
5.5.110.0130.06320.25
5.5.100.0100.07020.09
5.5.90.0070.07720.13
5.5.80.0100.06320.12
5.5.70.0070.07719.98
5.5.60.0070.04319.97
5.5.50.0170.07020.03
5.5.40.0030.05020.10
5.5.30.0100.07019.96
5.5.20.0100.08020.07
5.5.10.0070.04720.11
5.5.00.0070.07020.01

preferences:
68.95 ms | 400 KiB | 5 Q