3v4l.org

run code in 300+ PHP versions simultaneously
<?php class VarStorage { protected $_property; public function setProperty($value) { $this->_property = $value; } public function getProperty() { return $this->_property; } } function mem_print($message, $before, $after) { $difference = ($after - $before) / 1000000; echo sprintf($message, sprintf('%.2fM', $difference)); echo "\n"; } echo "Testing class in a PHP script\n\n"; // Create massive variable $mBeforeA = memory_get_usage(); $a1 = str_repeat('a', 3000000); $mAfterA = memory_get_usage(); mem_print('Creating $a1: %s', $mBeforeA, $mAfterA); // Refcount increases $a2 = str_repeat('a', 3000000); $mBeforeB = memory_get_usage(); $b = $a2; $mAfterB = memory_get_usage(); mem_print('$b = $a2: %s', $mBeforeB, $mAfterB); // Separation $mBeforeSeparation = memory_get_usage(); $b .= ''; $mAfterSeparation = memory_get_usage(); mem_print('$b .= '': %s', $mBeforeSeparation, $mAfterSeparation); // Setting to a class property $a4 = str_repeat('a', 3000000); $class = new VarStorage; $mBeforeStorageSet = memory_get_usage(); $class->setProperty($a4); $mAfterStorageSet = memory_get_usage(); mem_print('$class->setProperty($a4): %s', $mBeforeStorageSet, $mAfterStorageSet); // Getting from a class property $mBeforeStorageGet = memory_get_usage(); $result = $class->getProperty(); $mAfterStorageGet = memory_get_usage(); mem_print('$result = $class->getProperty(): %s', $mBeforeStorageGet, $mAfterStorageGet); $mBeforeSeparationFromStorage = memory_get_usage(); $result .= ''; $mAfterSeparationFromStorage = memory_get_usage(); mem_print('$result .= \'\': %s', $mBeforeSeparationFromStorage, $mAfterSeparationFromStorage);

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.170.0290.07912.40
5.4.160.0150.04712.39
5.4.150.0200.04312.39
5.4.140.0210.06912.08
5.4.130.0190.04312.06
5.4.120.0190.04112.03
5.4.110.0160.04312.02
5.4.100.0260.06312.03
5.4.90.0150.04312.03
5.4.80.0210.06712.02
5.4.70.0140.04312.02
5.4.60.0190.03812.02
5.4.50.0100.04712.02
5.4.40.0140.04312.00
5.4.30.0200.07012.00
5.4.20.0160.04212.00
5.4.10.0110.04612.00
5.4.00.0150.04211.49
5.3.270.0170.04512.72
5.3.260.0180.04312.72
5.3.250.0170.04212.72
5.3.240.0190.04112.72
5.3.230.0160.04612.71
5.3.220.0160.04412.68
5.3.210.0140.04712.68
5.3.200.0160.04512.68
5.3.190.0150.06412.67
5.3.180.0180.04212.67
5.3.170.0140.04612.67
5.3.160.0130.04612.67
5.3.150.0180.04112.67
5.3.140.0190.04112.66
5.3.130.0240.06712.66
5.3.120.0170.04312.66
5.3.110.0150.04512.66
5.3.100.0160.04412.13
5.3.90.0150.04312.11
5.3.80.0190.05612.09
5.3.70.0130.04512.09
5.3.60.0150.04412.08
5.3.50.0150.04312.02
5.3.40.0190.05412.03
5.3.30.0150.04111.99
5.3.20.0160.04211.77
5.3.10.0170.05311.75
5.3.00.0140.04311.72

preferences:
142.98 ms | 1386 KiB | 7 Q