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 .= 'data'; $mAfterSeparation = memory_get_usage(); mem_print('$b .= \'data\': %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 .= 'data'; $mAfterSeparationFromStorage = memory_get_usage(); mem_print('$result .= \'data\': %s', $mBeforeSeparationFromStorage, $mAfterSeparationFromStorage);

preferences:
33.43 ms | 402 KiB | 5 Q