3v4l.org

run code in 200+ php & hhvm versions
Bugs & Features
<?php /** * Immutable class for handling numbers with precision. * * Never change the $number or the $precision after the creation of the object. */ class DecimalNumber { private $precision; private $number; /** * Get an instance given a string and a precision * @param string $string The decimal number in string form * @param int $precision The precision of the number * @return DecimalNumber Return new instance */ public static function createWithString($string, $precision = 4) { $me = get_called_class(); $number = new $me; $number->precision = $precision; $number->number = bcadd($string, '0', $precision); return $number; } /** * Perform an addition operation * @param DecimalNumber $number the number to add * @return DecimalNumber Return the sum */ public function add(DecimalNumber $number) { return DecimalNumber::createWithString(bcadd($this->number, $number, $this->precision)); } /** * Automagically convert to a string * @return string returns a string containing the value of this DecimalNumber */ public function __toString() { return $this->number; } } $d = DecimalNumber::createWithString('.7'); echo $d->add(DecimalNumber::createWithString('.1'));

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.00.0030.01019.48
7.1.100.0050.00318.27
7.1.70.0030.00317.34
7.1.60.0030.02019.24
7.1.50.0090.00917.11
7.1.00.0000.03722.42
7.0.200.0040.00416.79
7.0.140.0000.07022.21
7.0.100.0100.07320.05
7.0.90.0070.08319.98
7.0.80.0070.07720.03
7.0.70.0030.07319.91
7.0.60.0000.05019.93
7.0.50.0200.07020.25
7.0.40.0070.07720.10
7.0.30.0170.07720.14
7.0.20.0100.08320.15
7.0.10.0100.08019.95
7.0.00.0030.08720.00
5.6.280.0030.07021.15
5.6.250.0100.07020.70
5.6.240.0030.09020.71
5.6.230.0070.08320.59
5.6.220.0070.07320.51
5.6.210.0070.08320.59
5.6.200.0130.05321.02
5.6.190.0030.05321.09
5.6.180.0170.07721.09
5.6.170.0130.07320.97
5.6.160.0130.07721.06
5.6.150.0100.07720.96
5.6.140.0070.08320.97
5.6.130.0130.07721.02
5.6.120.0070.08021.05
5.6.110.0100.04021.10
5.6.100.0070.08021.10
5.6.90.0100.07720.98
5.6.80.0070.07720.47
5.6.70.0030.08320.40
5.6.60.0130.07320.39
5.6.50.0100.04320.51
5.6.40.0130.07020.45
5.6.30.0100.08020.54
5.6.20.0070.08020.39
5.6.10.0170.04720.46
5.6.00.0100.07020.39
5.5.380.0070.08020.46
5.5.370.0030.07020.37
5.5.360.0070.08020.57
5.5.350.0070.08020.34
5.5.340.0130.07720.82
5.5.330.0070.07320.81
5.5.320.0100.04720.91
5.5.310.0130.05320.66
5.5.300.0130.04720.85
5.5.290.0100.08020.92
5.5.280.0070.08720.85
5.5.270.0070.07320.81
5.5.260.0100.08020.88
5.5.250.0170.07320.70
5.5.240.0130.06720.29
5.5.230.0100.07320.16
5.5.220.0070.08020.12
5.5.210.0100.07720.12
5.5.200.0130.07020.28
5.5.190.0130.07720.16
5.5.180.0070.08020.26
5.5.160.0030.07720.09
5.5.150.0000.08020.22
5.5.140.0070.07720.22
5.5.130.0070.07320.15
5.5.120.0070.07720.16
5.5.110.0130.07320.22
5.5.100.0070.03720.13
5.5.90.0000.06720.16
5.5.80.0070.07020.06
5.5.70.0070.07720.15
5.5.60.0100.07720.11
5.5.50.0070.07320.06
5.5.40.0030.07720.09
5.5.30.0070.07720.00
5.5.20.0100.07020.04
5.5.10.0070.08020.02
5.5.00.0030.04720.05
5.4.450.0170.07019.28
5.4.440.0030.08719.27
5.4.430.0030.05719.49
5.4.420.0130.07019.22
5.4.410.0070.07719.42
5.4.400.0100.07019.04
5.4.390.0070.07718.85
5.4.380.0030.08019.23
5.4.370.0000.08319.14
5.4.360.0100.07318.95
5.4.350.0000.05719.13
5.4.340.0000.08319.13
5.4.320.0030.08018.90
5.4.310.0030.06319.08
5.4.300.0030.07718.89
5.4.290.0070.07019.13
5.4.280.0100.07019.07
5.4.270.0030.07319.05
5.4.260.0130.04019.18
5.4.250.0070.06719.07
5.4.240.0070.04319.02
5.4.230.0070.06019.12
5.4.220.0100.07019.12
5.4.210.0070.07319.13
5.4.200.0100.07319.20
5.4.190.0100.07018.89
5.4.180.0000.06019.12
5.4.170.0070.04319.11
5.4.160.0000.04019.01
5.4.150.0000.04019.18
5.4.140.0030.03716.54
5.4.130.0000.03716.47
5.4.120.0000.04316.42
5.4.110.0030.03716.51
5.4.100.0070.03016.27
5.4.90.0030.03316.43
5.4.80.0000.06716.49
5.4.70.0030.04016.37
5.4.60.0030.05716.38
5.4.50.0070.06016.43
5.4.40.0000.04316.48
5.4.30.0070.03316.48
5.4.20.0000.05016.32
5.4.10.0070.03316.31
5.4.00.0070.03015.69
5.3.290.0100.07714.73
5.3.280.0030.08314.66
5.3.270.0000.06014.62
5.3.260.0030.05014.68
5.3.250.0000.04014.68
5.3.240.0030.03714.55
5.3.230.0030.03714.70
5.3.220.0000.04714.70
5.3.210.0000.04014.56
5.3.200.0100.03314.70
5.3.190.0070.03014.59
5.3.180.0000.04014.63
5.3.170.0070.07714.64
5.3.160.0030.07714.63
5.3.150.0030.03714.58
5.3.140.0000.04014.54
5.3.130.0000.04714.61
5.3.120.0030.05014.57
5.3.110.0000.07014.66
5.3.100.0030.04014.17
5.3.90.0000.04014.05
5.3.80.0030.04714.12
5.3.70.0030.04014.04
5.3.60.0000.04014.00
5.3.50.0030.05014.02
5.3.40.0030.03713.98
5.3.30.0000.03713.97
5.3.20.0070.03713.75
5.3.10.0030.05713.59
5.3.00.0000.03713.68
5.2.170.0070.06011.27
5.2.160.0000.03011.21
5.2.150.0000.03011.01
5.2.140.0000.03311.28
5.2.130.0000.03311.25
5.2.120.0070.04711.20
5.2.110.0030.02711.23
5.2.100.0100.02311.00
5.2.90.0000.03010.98
5.2.80.0000.04311.13
5.2.70.0000.03011.13
5.2.60.0000.03311.19
5.2.50.0030.02710.95
5.2.40.0070.02311.13
5.2.30.0000.03010.86
5.2.20.0070.02311.11
5.2.10.0070.02310.82
5.2.00.0000.03010.59
5.1.60.0030.02310.15
5.1.50.0000.03310.15
5.1.40.0000.02710.15
5.1.30.0070.02310.43
5.1.20.0000.02710.30
5.1.10.0030.05310.15
5.1.00.0070.05310.20
5.0.50.0030.04710.15
5.0.40.0000.04710.15
5.0.30.0030.06010.15
5.0.20.0030.04310.15
5.0.10.0100.04010.15
5.0.00.0030.05710.15
4.4.90.0000.01310.15
4.4.80.0000.02310.15
4.4.70.0000.01710.15
4.4.60.0000.02710.15
4.4.50.0000.01710.15
4.4.40.0030.04310.15
4.4.30.0000.01710.15
4.4.20.0070.01010.15
4.4.10.0000.03710.15
4.4.00.0000.05310.15
4.3.110.0070.03010.15
4.3.100.0030.03710.15
4.3.90.0030.02310.15
4.3.80.0030.03710.15
4.3.70.0130.02310.15
4.3.60.0000.03710.15
4.3.50.0000.03710.15
4.3.40.0070.04310.15
4.3.30.0000.02010.15
4.3.20.0030.02010.15
4.3.10.0000.03710.15
4.3.00.0030.03310.15