3v4l.org

run code in 300+ PHP versions simultaneously
<?php <?php defined('C5_EXECUTE') or die('Access Denied'); /** * 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::decimalNumberWithString(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).

VersionSystem time (s)User time (s)Memory (MiB)
5.4.210.0090.05112.38
5.4.200.0110.04312.37
5.4.190.0100.04312.37
5.4.180.0120.04112.37
5.4.170.0120.04412.38
5.4.160.0100.04312.37
5.4.150.0120.04512.37
5.4.140.0120.04512.06
5.4.130.0130.05612.04
5.4.120.0120.04612.01
5.4.110.0140.03712.01
5.4.100.0120.04112.00
5.4.90.0110.04112.00
5.4.80.0180.05612.00
5.4.70.0140.04612.00
5.4.60.0140.04312.00
5.4.50.0100.04712.00
5.4.40.0120.05411.99
5.4.30.0130.04311.98
5.4.20.0140.05411.98
5.4.10.0140.04311.98
5.4.00.0170.06811.48
5.3.270.0140.06412.72
5.3.260.0150.05812.72
5.3.250.0150.04712.72
5.3.240.0170.05412.72
5.3.230.0130.04312.71
5.3.220.0130.04112.68
5.3.210.0150.04812.68
5.3.200.0110.04912.68
5.3.190.0140.04612.68
5.3.180.0160.04312.67
5.3.170.0120.04312.67
5.3.160.0200.04912.67
5.3.150.0110.04912.67
5.3.140.0140.05212.66
5.3.130.0140.04912.65
5.3.120.0100.05012.66
5.3.110.0130.05212.66
5.3.100.0120.04712.12
5.3.90.0130.04612.08
5.3.80.0090.04312.07
5.3.70.0110.04212.07
5.3.60.0120.04312.06
5.3.50.0100.04212.00
5.3.40.0120.04012.00
5.3.30.0130.03611.94
5.3.20.0150.03511.72
5.3.10.0080.04111.69
5.3.00.0090.04211.67

preferences:
139.41 ms | 1394 KiB | 7 Q