- round: documentation ( source)
- memory_get_usage: documentation ( source)
<?php
class IteratorWithFilter
{
public $generator;
public function __construct(array $data)
{
$this->generator = new \ArrayIterator($data);
}
public function filter()
{
$this->generator = new \CallbackFilterIterator($this->generator, static function ($row) {
return true;
});
return $this;
}
}
function createIterator() {
$iter = new IteratorWithFilter([['a'], ['b']]);
return $iter->filter();
}
for ($i = 0; $i < 50 * 1000; $i++) {
createIterator();
if (($i % 1000) === 0) {
// gc_collect_cycles(); // explicit GC does not help...
echo round(memory_get_usage() / (1024 * 1024), 3) . " MiB\n";
}
}