3v4l.org

run code in 300+ PHP versions simultaneously
<?php class IteratorWithFilter { public $generator; public function __construct(array $data) { $this->generator = new \ArrayIterator($data); } public function filter(Closure $closure) { $closure = clone $closure; $closure->bindTo($this); $this->generator = new \CallbackFilterIterator($this->generator, $closure); return $this; } } function createIterator(Closure $closure) { $iter = new IteratorWithFilter([['a'], ['b']]); return $iter->filter($closure); } function createClosure() { return function ($row) { return true; }; } $closure = createClosure(); for ($i = 0; $i < 50 * 1000; $i++) { createIterator($closure); if (($i % 1000) === 0) { // gc_collect_cycles(); // explicit GC does not help... echo round(memory_get_usage() / (1024 * 1024), 3) . " MiB\n"; } }
Output for 7.3.0 - 7.3.22, 7.4.0 - 7.4.10
0.374 MiB 0.374 MiB 0.374 MiB 0.374 MiB 0.374 MiB 0.374 MiB 0.374 MiB 0.374 MiB 0.374 MiB 0.374 MiB 0.374 MiB 0.374 MiB 0.374 MiB 0.374 MiB 0.374 MiB 0.374 MiB 0.374 MiB 0.374 MiB 0.374 MiB 0.374 MiB 0.374 MiB 0.374 MiB 0.374 MiB 0.374 MiB 0.374 MiB 0.374 MiB 0.374 MiB 0.374 MiB 0.374 MiB 0.374 MiB 0.374 MiB 0.374 MiB 0.374 MiB 0.374 MiB 0.374 MiB 0.374 MiB 0.374 MiB 0.374 MiB 0.374 MiB 0.374 MiB 0.374 MiB 0.374 MiB 0.374 MiB 0.374 MiB 0.374 MiB 0.374 MiB 0.374 MiB 0.374 MiB 0.374 MiB 0.374 MiB
Output for 7.2.0 - 7.2.33
0.371 MiB 0.371 MiB 0.371 MiB 0.371 MiB 0.371 MiB 0.371 MiB 0.371 MiB 0.371 MiB 0.371 MiB 0.371 MiB 0.371 MiB 0.371 MiB 0.371 MiB 0.371 MiB 0.371 MiB 0.371 MiB 0.371 MiB 0.371 MiB 0.371 MiB 0.371 MiB 0.371 MiB 0.371 MiB 0.371 MiB 0.371 MiB 0.371 MiB 0.371 MiB 0.371 MiB 0.371 MiB 0.371 MiB 0.371 MiB 0.371 MiB 0.371 MiB 0.371 MiB 0.371 MiB 0.371 MiB 0.371 MiB 0.371 MiB 0.371 MiB 0.371 MiB 0.371 MiB 0.371 MiB 0.371 MiB 0.371 MiB 0.371 MiB 0.371 MiB 0.371 MiB 0.371 MiB 0.371 MiB 0.371 MiB 0.371 MiB

preferences:
85.82 ms | 402 KiB | 73 Q