3v4l.org

run code in 300+ PHP versions simultaneously
<?php class A { protected $_iterator; protected $_appendIterator; public function __construct($appendIterator = true) { $this->_appendIterator = $appendIterator; $arrayIterator= new ArrayIterator([$this, $this, $this, $this]); if ($appendIterator) { $this->_iterator = new AppendIterator(); $this->_iterator->append($arrayIterator); } else { $this->_iterator = $arrayIterator; } } public function __destruct() { echo 'destructing A::class(' . var_export($this->_appendIterator, true) .') ' . PHP_EOL; } } echo "Running with AppendIterator(): " . PHP_EOL; $mStart = memory_get_usage(); for ($i = 0; $i < 10; $i++) new A(); echo memory_get_usage() - $mStart . " memory increase " . PHP_EOL; echo "Running GC.." . PHP_EOL; echo "Found " . gc_collect_cycles() . " cycles..." . PHP_EOL . PHP_EOL; echo "Running without AppendIterator(): " . PHP_EOL; $mStart = memory_get_usage(); for ($i = 0; $i < 10; $i++) new A(false); echo memory_get_usage() - $mStart . " memory increase " . PHP_EOL; echo "Running GC.." . PHP_EOL; echo "Found " . gc_collect_cycles() . " cycles..." . PHP_EOL; echo "Done!" . PHP_EOL . PHP_EOL;
Output for 7.4.0 - 7.4.1
Running with AppendIterator(): 15424 memory increase Running GC.. Found 0 cycles... Running without AppendIterator(): 5840 memory increase Running GC.. destructing A::class(false) destructing A::class(false) destructing A::class(false) destructing A::class(false) destructing A::class(false) destructing A::class(false) destructing A::class(false) destructing A::class(false) destructing A::class(false) destructing A::class(false) Found 0 cycles... Done! destructing A::class(true) destructing A::class(true) destructing A::class(true) destructing A::class(true) destructing A::class(true) destructing A::class(true) destructing A::class(true) destructing A::class(true) destructing A::class(true) destructing A::class(true)
Output for 7.0.0 - 7.0.33, 7.1.0 - 7.1.33, 7.2.0 - 7.2.26, 7.3.0 - 7.3.13
Running with AppendIterator(): 15424 memory increase Running GC.. Found 0 cycles... Running without AppendIterator(): 5840 memory increase Running GC.. destructing A::class(false) destructing A::class(false) destructing A::class(false) destructing A::class(false) destructing A::class(false) destructing A::class(false) destructing A::class(false) destructing A::class(false) destructing A::class(false) destructing A::class(false) Found 40 cycles... Done! destructing A::class(true) destructing A::class(true) destructing A::class(true) destructing A::class(true) destructing A::class(true) destructing A::class(true) destructing A::class(true) destructing A::class(true) destructing A::class(true) destructing A::class(true)
Output for 5.6.23 - 5.6.40
Running with AppendIterator(): 19784 memory increase Running GC.. Found 0 cycles... Running without AppendIterator(): 9920 memory increase Running GC.. destructing A::class(false) destructing A::class(false) destructing A::class(false) destructing A::class(false) destructing A::class(false) destructing A::class(false) destructing A::class(false) destructing A::class(false) destructing A::class(false) destructing A::class(false) Found 40 cycles... Done! destructing A::class(true) destructing A::class(true) destructing A::class(true) destructing A::class(true) destructing A::class(true) destructing A::class(true) destructing A::class(true) destructing A::class(true) destructing A::class(true) destructing A::class(true)
Output for 5.6.0 - 5.6.22
Running with AppendIterator(): 19784 memory increase Running GC.. Found 0 cycles... Running without AppendIterator(): 9920 memory increase Running GC.. Found 0 cycles... Done! destructing A::class(true) destructing A::class(true) destructing A::class(true) destructing A::class(true) destructing A::class(true) destructing A::class(true) destructing A::class(true) destructing A::class(true) destructing A::class(true) destructing A::class(true) destructing A::class(false) destructing A::class(false) destructing A::class(false) destructing A::class(false) destructing A::class(false) destructing A::class(false) destructing A::class(false) destructing A::class(false) destructing A::class(false) destructing A::class(false)

preferences:
152.31 ms | 402 KiB | 157 Q